python爬虫笔记-day3

正则使用的注意点
re.findall("a(.*?)b","str"),能够返回括号中的内容,括号前后的内容起到定位和过滤的效果
原始字符串r,待匹配字符串中有反斜杠的时候,使用r能够忽视反斜杠带来的转义的效果
点号默认情况匹配不到\n
\s能够匹配空白字符,不仅仅包含空格,还有\t|\r\n

xpath学习重点
使用xpath helper或者是chrome中的copy xpath都是从element中提取的数据,但是爬虫获取的是url对应的响应,往往和elements不一样
获取文本

a/text() 获取a下的文本
a//text() 获取a下的所有标签的文本
//a[text()='下一页'] 选择文本为下一页三个字的a标签

@符号

a/@href
//ul[@id="detail-list"]

//

在xpath最前面表示从当前html中任意位置开始选择
li//a 表示的是li下任何一个标签

lxml使用注意点
lxml能够修正HTML代码,但是可能会改错了

使用etree.tostring观察修改之后的html的样子,根据修改之后的html字符串写xpath

lxml 能够接受bytes和str的字符串
提取页面数据的思路

先分组,渠道一个包含分组标签的列表
遍历,取其中每一组进行数据的提取,不会造成数据的对应错乱
xpath的包含
//div[contains(@class,'i')]

实现爬虫的套路
准备url

准备start_url

url地址规律不明显,总数不确定
通过代码提取下一页的url

xpath
寻找url地址,部分参数在当前的响应中(比如,当前页码数和总的页码数在当前的响应中)

准备url_list

页码总数明确
url地址规律明显

发送请求,获取响应

添加随机的User-Agent,反反爬虫
添加随机的代理ip,反反爬虫
在对方判断出我们是爬虫之后,应该添加更多的headers字段,包括cookie
cookie的处理可以使用session来解决
准备一堆能用的cookie,组成cookie池

如果不登录

准备刚开始能够成功请求对方网站的cookie,即接收对方网站设置在response的cookie
下一次请求的时候,使用之前的列表中的cookie来请求

如果登录

准备多个账号
使用程序获取每个账号的cookie
之后请求登录之后才能访问的网站随机的选择cookie

提取数据

确定数据的位置

如果数据在当前的url地址中

提取的是列表页的数据

直接请求列表页的url地址,不用进入详情页

提取的是详情页的数据

确定url

发送请求

提取数据

返回

如果数据不在当前的url地址中

在其他的响应中,寻找数据的位置

从network中从上往下找

使用chrome中的过滤条件,选择出了js,css,img之外的按钮

使用chrome的search all file,搜索数字和英文

数据的提取

xpath,从html中提取整块的数据,先分组,之后每一组再提取
re,提取max_time,price,html中的json字符串
json

保存

保存在本地,text,json,csv
保存在数据库

猜你喜欢

转载自blog.51cto.com/13517854/2321200