总结最近学习python爬虫遇到的问题(selenium+Chrome,urllib,requests)

最近学习了一下爬虫,兴趣使然吧!(注:以下均在python3的环境下实验)
1.基本库,先说一下基本库有,urllib和requests两个库:
基本库的作用是:发送页面请求,处理异常,解析链接,分析Robots协议。
基本用法urllib有:
from urllib.request import urlopen
Requestreq = Request(url,headers=headers)
pic_req = urlopen(req)
html = pic_req.read()
可以看出urllib可以添加头文件,模拟正常的响应,但是设置cookie非常繁琐,需要添加额外的cookie相关的库,大部分网站现在都会设置cookie来跟踪用户的数据浏览,cookie的缺失会导致对方服务器持续一段时间后直接断开连接。urlopen()打开网页,read()读取网页源码,urllib的响应速度极快,也是非常适合小规模爬虫的,
requests库基本用法:
import requests
response = requests.get(url,headers=headers)
print(response.status_code) # 打印状态码
print(response.url) # 打印请求
urlprint(response.headers) # 打印头信息
print(response.cookies) # 打印cookie信息
print(response.text) #以文本形式打印网页源码
print(response.content) #以字节流形式打印
requests库优于urllib的地方在于里面直接有cookie,登录验证,代理设置等等。可以在headers里面设置cookie,发送请求。
当然在某些场合下,如在某些图片的处理上,urllib的性能优于requests。

2,解析库
解析库有:Xpath,Beautiful Soup,pyquery,正则表达式

解析库的主要作用是:处理基本库提交过来的页面数据,进行解析,获取需要的内容对页面进行加工整理。
使用Xpath需要安装lxml,其用法在于根据标签获得需要的href或者text,还能对网页url路径解析

nodename                选取此节点的所有子节点
/                                从当前节点直接选取子节点
//                               重定向节点,可以从任意位置开始( 用的很多
.                                选取当前节点
..                                选取当前节点的父节点
@                              选取属性
Beautiful Soup,pyquery也是类似,定义标签,然后通过find()或者find_all()通过标签获取文本属性或者文本,更深一步的文本加工,或者信息提取,需要用到正则表达式。
因为我首次接触爬虫就是直接用正则表达式解析的,正则表达式,算是“万金油”型的东西,既可以进行标签内容定位,也可以进行内容的再次加工提取。用好了,正则表达式在解析方面基本是万能的,正则表达式里面的东西太多就不在这里说了。

3,高级的爬虫selenium
selenium不同于其他的库,selenium是调用真实的浏览器,去获取网页信息,不需要设置cookie,headers这些东西。也不容易被对方服务器中断连接。更为强大的地方在于,selenium可以模仿用户的键盘和鼠标行为,发送信息指令。并且自带的有解析网页的方法。经过Javascript渲染的页面selenium也可以正常解析。抓取方式非常有效。

selenium需要有本地浏览器支持:
支持的浏览器有:Chrome()#google浏览器,已经提供了headless模式

                            Firefox()#火狐浏览器
                            Edge()#windows的IE浏览器
                          PhantomJS()#以前很适合selenium的,其无头模式大受欢迎,然而2018年3月份,开发者之间出现矛盾,项目停止更新,被封存了,最新版的selenium已经不再支持PhantomJS,而Chrome()从2017年开始提供浏览器的headless()(无头模式)广泛使用。
                            Safari()#苹果的浏览器
      用selenium+Chrome和urllib结合的方式,爬取了塔多漫画漫画网的漫画,具体代码请在github 上下载:
       https://github.com/linggood/-

你可能感兴趣的:(专业知识,爬,塔,漫)