携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
1. Xpath解析
- 1.安装lxml模块
- 2.pip install lxml (此处如果下载速度比较慢,可以通过查看之前的博客所写的方法)
- 3.导入extree(from lxml import etree)
- 4.tree = extree.XML()
- 5.tree = extree.html()
- 6.tree = extree.parse()
- 然后通过tree即可进行相关的xpath操作
2. 正则表达式re模块
当我们需要调用的时候可以 通过pandas包进行直接调用
- 1.需要导入的包是csv包,表示可以将相关信息存入csv表中
- 2.需要导入的包是re包,用于正则表达式的书写
- 3.需要导入额包是requests包,用于获取网页源代码
获取网页源码的代码是:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36"
}
resp = requests.get(url=url,headers=headers)
print(resp.text)
需要注意的是:正则表达式的书写方式有很多,一定要注意最后文件的关闭,防止被IP禁止或者占用内存资源.
我们可以将我们爬取的内容存放入excel或者csv表中,方便之后进行数据分析.
f = open("data.csv", mode="w", encoding="utf-8", newline='')
csvlist = csv.writer(f)
3. Bs4使用
-
1.通过pip install bs4将bs4包进行安装
-
2.导入包from bs4 import BeautifulSoup
-
3.把页面源代码交给BeautifulSoup进行处理, 生成bs对象 page = BeautifulSoup(resp.text, "html.parser") # 指定html解析器,如果不指定解析器不会报错,但是会爆红
-
4.从bs对象中查找数据
find(标签, 属性=值)
find_all(标签, 属性=值)
-
5.在指定属性的过程中,例如class和id等是python的关键字,所以直接使用python关键字会发现报错,有两种解决方式: 第一种是在关键字后加_可解决问题,例如:class_ table = page.find("table", class_="hq_table") 第二种是使用attrs{},例如: table = page.find("table", attrs={"class": "hq_table"})
4. 常见的问题
请求头中最常⻅的⼀些重要内容(爬⾍需要):
User-Agent : 请求载体的身份标识(⽤啥发送的请求)
Referer: 防盗链(这次请求是从哪个⻚⾯来的? 反爬会⽤到)
cookie: 本地字符串数据信息(⽤户登录信息, 反爬的token)
响应头中⼀些重要的内容:
cookie: 本地字符串数据信息(⽤户登录信息, 反爬的token) 各种神奇的莫名其妙的字符串( 防⽌各种攻击和反爬) 请求方式:
1.GET方式(显示提交)
2.POST方式(隐示提交,请求参数加密)
在正则表达式中,findall返回的是列表,在编写代码的过程中如果碰到有波浪线的情况可以加个r只有好处没有坏处.
lst = re.findall(r"\d+", "5点之前. 你要给我5000万")