页面返回的element是非常多的东西,有很多并不是我们所需要的,所以需要对数据进行筛选。
这里引入一个第三方模板:lxml
1.引入前需要安装,可以通过命令行:pip install lxml或者直接在编辑器搜索模板进行安装。
2.安装成功后:需要在代码顶部引入。
from lxml import etree
3.代码如下:
import requests
from lxml import etree
url = "https://movie.douban.com/chart"
headers = {
"Referer": "//m.douban.com/movie/",
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/68.0.3440.75 Safari/537.36"}
response = requests.get(url, headers=headers)
con = response.content.decode()
html = etree.HTML(con)
ret = html.xpath("//div[@class='indent']/div/table")
for table in ret:
item = {}
item['title'] = table.xpath(".//div[@class='pl2']/a/text()")[0].replace("/","").strip()
item['href'] = table.xpath(".//div[@class='pl2']/a/@href")[0]
item['src'] = table.xpath(".//a[@class='nbg']/img/@src")[0]
print(item)
requests模块用来模拟浏览器发送请求,etree用来筛选数据。
strip()用来移除首尾的空格。replace("/","")表示用空字符来替换"/",
需要注意的是在循环时路径前必须是对于当前路径,也就是必须加//前必须加.
4.输出如下
注:谷歌浏览器也提供了xpath插件,可以在谷歌应用商店进行下载,安装后就可以直接在页面上使用了。