python 爬虫入门学习小结

爬虫的基本结构

    一个简单的爬虫结构应该包括5要素:调度器,URL管理器,网页下载器,网页解析器以及输出应用,各个结构的交互过程如下图。
爬虫过程

1,URL管理器:

作用:管理待抓取的URL和已抓取的URL**集合**,防止重复抓取以及循环抓取。
实现方式:
- 存放在内存:使用set( )的数据结构
- 存在在数据库当中
- 存放在缓存中:如redis,支持set( )的这种数据结构
使用set( )的好处在于,在集合中,不会存在相同的元素,避免了重复抓取

2,网页下载器:

作用:将网页下载到本地。
主要有两种下载器:
- python基础模块:urllib2(python2)
- 第三方库:requests
这里暂时只介绍urllib2,requests之后补充

第一种方式:最简洁:urllib2.urlopen(”)
# 直接请求
response = urllib2.urlopen(url)
# 获取状态码 200表示成功
status = response.getcode()
# 读取内容
content = response.read()
第二种方式:需要向服务器提交数据:添加data, http header
# 创建request对象
request = urllib2.Request(url)
# 添加post数据,不要随意加
# request.add_date('a', '1')
# 添加http的header,伪装成浏览器,有些网站不允许非浏览器访问
request.add_header('User-Agen', 'Mozilla/5.0')
# 发送请求
response = urllib2.urlopen(request)
第三种方式:添加特殊情景的处理器,如使用cookie登录
import cookielib
# 创建cookie容器
cookie_jar = cookielib.CookieJar()
# 创建一个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
# 给urllib2安装opener
urllib2.install_opener(opener)
# 使用带有cookie的url访问网页
response = urllib2.urlopen(url)

3,网页解析器

有几种方法可以对网页进行解析
- 正则表达式:这是一种模糊匹配的方式
下面几种都是以结构化解析(DOM):以树的方式进行遍历
- html.parser
- lxml
- BeautifulSoup 第三方库,支持parser以及lxml,下面主要介绍这个

# BeautifulSoup使用,pip install beautifulsoup4进行安装
from bs4 import BeautifulSoup
# 创建BeautifulSoup的对象(html内容,指定解释器,编码)
soup = BeautifulSoup(html_doc, 'html.parser', from_encoding='utf=8')

# 获取节点 (name标签,class_,string)
# find找到第一个匹配到的,而find_all匹配全部并返回一个列表
links = soup.find_all('a')
link_node = soup.find('a',href=re.compile(r'ill'))

读取节点信息
# 读取标签,这里输出为'a'
print link_node.name
# 它的属性,存为一个字典
print link_node['href']
# 获取它的内容
print link_node.get_text()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值