首页 > 代码库 > python爬虫抓取数据

python爬虫抓取数据


URL管理器实现方式:
1. 内存
python内存
待爬取URL集合:set()
已爬取URL集合:set()

2. 关系数据库
MySQL
urls(url, is_crawled)

3. 缓存数据库(高性能,大公司存储)
redis
待爬取URL集合:set
已爬取URL集合:set

网页下载器
urllib2 python官方基础模块
requests 第三方包更强大

import urllib2

urllib2下载网页方法一:
###########################
#直接请求
response = urllib2.urlopen(‘http://www.baidu.com‘)

#获取状态码,如果是200表示获取成功
print response.getcode()

#读取内容
cont = response.read()

############################

urllib2下载网页方法2:
添加data、http header

############################
import urllib2

# 创建Request对象
request = urllib2.Request(url)

# 添加数据
request.add_data(‘a‘, ‘1‘)
# 添加http的header
request.add_header(‘User-Agent‘, ‘Mozilla/5.0‘)

# 发送请求获取结果
response = urllib2.urlopen(request)
############################

urllib2下载网页方法3:
添加特殊情景的处理器
HTTPCookieProcessor
ProxyHandler
HTTPSHandler
HTTPRedirectHandler

urllib2下载网页的三种方法:
技术分享

网页解析器
从网页中提取有价值数据的工具
1. 正则表达式 (复杂,模糊匹配)
1. html.parser
2. Beautiful Soup (第三方插件,强大)
3. lxml

Beautiful Soup
Python第三方库,用于从HTML或XML中提取数据
官网:https://www.crummy.com/software/BeautifulSoup/

安装Beautiful Soup
技术分享

Beautiful Soup语法
1. 根据Html网页,创建BeautifulSoup对象
2. 搜索节点 find_all、find(可以按节点名称、节点属性值、节点文字进行搜索)
3. 然后就可以访问节点的名称、属性、文字

# 创建BeautifulSoup对象
from bs4 import BeautifulSoup

# 根据HTML网页字符串创建BeautifulSoup对象
soup = BeautifulSoup(
html_doc, # HTML文档字符串
‘html.parser‘ #HTML解析器
from_encoding=‘utf8‘ #HTML文档的编码
)

# 搜索节点(find_all, find)
find_all(name, attrs, string)

# 查找所有标签为a的节点
soup.find_all(‘a‘)

# 查找所有标签为a,链接符合/view/123.htm形式的节点
soup.find_all(‘a‘, href=http://www.mamicode.com/‘/view/123.htm‘)

# <a href=http://www.mamicode.com/‘123.htm‘ class=‘abc‘>Python

# 查找所有标签为div,class为abc,文字为Python的节点
soup.find_all(‘div‘, class_=‘abc‘, string=‘Python‘)


访问节点的信息:
# 得到节点:<a href=http://www.mamicode.com/‘1.html‘>Python

# 获取查找到的节点的标签名称
node.name

# 获取查找到的a节点的href属性
node[‘href‘]

# 获取查找到的a节点的链接文字
node.get_text()

 

python爬虫抓取数据