Python网络爬虫 (二) urllib2

1.网络爬虫的架构 : 

 

2.URL管理器的简单实现 :

(1)存放待爬取URL的 set 集合.

(2)存放未爬取URL的  set 集合.

(3)URL管理器应该具有的方法 :   添加新的URL,    判断添加的URL是否存在,   判断是否存在待爬取的URL,   获取待爬取的URL,   移动爬取完成的URL由未爬取 set 集合至  已爬取 set 集合.

3.网页下载器的三种实现 :

(1) 通过url简单实现.

#直接通过url获取要爬取的页面信息
response = urllib2.uelopen(url)
#获取爬取的返回状态码
statusCode = response.getCode()
#获取HTML内容
response.read()

(2) 对request数据的封装, 此时可以添加请求头, 设置代理, 和请求数据

import urllib2

#获取request
request = urllib2.Request("http://www.baidu.com")
#设置请求头
request.add_header("user-agent", 'Mozilla/5.0')
#获取响应信息
response = urllib2.urlopen(request)
#获取状态码
code = response.getcode()
#获取信息
info = response.read()

(3)添加一些特殊的处理  : eg, 添加cooker,   HTTPCookieProcessor  用来处理cookie,   ProxyHandler用来处理代理,  HttpsHandler用来处理 Https的请求, HTTPRedirectHandler 用来处理跳转关系.

#获取cookie的容器
cookie = cookielib.CookieJar()
#获取cookie处理的模块
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
#添加cookie处理模块
urllib2.install_opener(opener)
#访问url
response = urllib2.urlopen("http://www.baidu.com")

print response.getcode()
#打印cookie的内容
print cookie
print response.read()

3.网页解析器 : 

(1)DOM树结构

(2)常用的解析方式   : 第一, 正则匹配, 会将下载的网页当做一个字符串, 进行模糊匹配;   第二,   html.parser  , Python自带的解析器 ;     第三. beautifulSoup 第三方解析插件, 很强大;  第四,  Lxml 第三方解析.   其中后三种都是结构化的解析,   使用DOM树的模型.  

4 BeautifulSoup4的使用  :  主要使用 bs4 进行网页的解析操作.

(1)find搜寻出的是符合条件的第一个元素.  

(2)创建BeatuifulSoup4的对象  : 

from bs4 import BeautifulSoup

soup = BeautifulSoup(
    html_doc,  #html 字符串
    'html_parser',   #html解析器
    from_encoding='utf8' #编码格式
)

(3)进行节点搜索 :    class属性在soup中使用class_表示html的 class属性, 因为class是Python的关键字.   下图中的re表示正则校验.

 

(4)访问节点信息  :   按照字典的形式访问节点中属性的信息

(5)还可以使用soup对象进行属性过滤选择 : 使用soup.select

soup.select("p > #link1")

 

 

5. 对于Python的set集合 : 

(1)set集合是不重复无序的, 无序指的是存放顺序和输出顺序不同.   

(2)set.pop方法, 如果集合中方的是list和元祖时, 删除的是最左边的元素, 当存放的是字典和字符的集合的时候是随机删除的.

6.Python中的静态方法是写在class外面, 并且不添加self修饰的方法.

7.Python 中 'aaa{}'.format('bbb')会输出aaabbb

8. re.search(regex, str)  匹配字符串中是否包含正则表达式匹配的值.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值