Python爬虫入门
1.利用requests库获取内容
- 构造请求头
- get方法获取内容
#导入所需第三方库
import requests
from lxml import etree
#构造请求头,模拟真人访问,如果不加,会直接以爬虫身份访问,可能获取不到内容。(不懂的话,直接复制使用就可以)
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
1.1.以从浏览器搜索列表获取URL为例
1.1.1.用谷歌浏览器搜索百度,从弹出的页面解析百度搜索的网址。
url=“https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6”
该url对应的链接如图,即用谷歌浏览器搜索百度弹出的页面,目标就是获取该页内容。
#利用get方法获取内容,提取text内容(text可以理解为文本内容),结果保存在content中。
content = requests.get(url, headers=headers).text
2.用xpath进行解析
2.1. etree结构化处理
因为用text获取到的内容为str格式,简单理解就是类似txt格式文件,没有清晰的结构,不方便定位特定的内容。(当然这种格式可以直接用正则表达式获取内容,就像搜索功能一样,这里不多赘述)
#将构造好的内容保存在a中
a=etree.HTML(content)
2.2.获取xpath地址
- 在谷歌浏览器右击,选择检查
- 在弹出的界面点击左上角的小箭头,让箭头变蓝
- 点击第一条,”百度一下,你就知道“,在检查界面找到链接url,即为所需链接。
- 在所需内容上右键——copy——copy xpath,即复制到了所需的内容的xpath地址。
代码如下:
#注意,复制到的xpath只有//*[@id="1"]/h3/a[1],但是这是整个a标签的内容,注意到网址是在href属性里的,因此,用@href提取内容。
detail_url=a.xpath('//*[@id="1"]/h3/a[1]/@href')
注意,获取到的内容为一个列表,如需使用需提取。
完整代码
import requests
from lxml import etree
url="https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
content = requests.get(url, headers=headers).text
a=etree.HTML(content)
detail_url=a.xpath('//*[@id="1"]/h3/a[1]/@href')
print(detail_url[0])