入门爬虫笔记01
1.request库的使用
-
使用request库的get方法
import request r = request.get('www.baidu.com')
这会得到一个Response对象,将其存入变量r。
-
显示得到的html代码
print(r.text)
有时候会出现乱码的情况,这时候在网站使用开发者工具(F12),在head标签下,找一下'charset'这个单词
如图百度的 charset = 'utf-8',所以在程序中加入代码:
r.encoding = 'utf-8' # 'gbk' 'utf-8'这个两个最常见
2.使用xpath解析
-
生成实例
tree = etree.HTML(r.text)
-
xpath匹配模式
-
路径定位
tree.xpath('/html/body/div') # 绝对路径 相对路径 tree.xpath('/html//div')
-
属性定位
tree.xpath('//div[@class='song']') # 定位class属性等于song 的 div标签
-
引索定位
tree.xpath('//div[@class='song']/p[3]') # 定位<div class="song"></div>内的第三个p标签 # 这个引索是从1开始的,而不是从0开始
这些匹配模式可以组合使用,完成复杂的匹配。
-
-
取出数据
- 使用 @href 取出链接
- 使用 text() 取出标签内的文本
练习:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <div class="main"> </div> <div class="menu"> <ul> <li> <a href='https://www.baidu.com'>baidu</a> </li> <li> <a href='https://www.bilibili.com/'>bilibili</a> </li> </ul> </div> </body> </html>
取出第一个a标签的文本"baidu":
a1 = tree.xpath("/html/body/div[@class='menu']/ul/li[1]/a/text()")
取出第二个a标签的链接"https://www.bilibili.com/":
a2 = tree.xpath("/html/body/div[2]/ul/li[2]/a/@href")
-
睡觉!