今天所要爬取的网页信息是豆瓣网里的电影无数遍合集里的影视信息。
首先进入我们的豆瓣网站,
这里我们所使用了一个工具:
1.Convert curl commands to Python, JavaScript and more
这是一个在线curl命令转代码工具,支持将curl命令转换为java,golang,python,js,php,rust,dart等编程语言代码。
附上网址:Convert curl commands to code (curlconverter.com)
作用:方便我们更快速地获取网页所需信息。
流程如下:
在网页空白处单击右键—→“检查”—→“网络(network)”—→“全部(ALL)”
—→刷新一次网页—→复制cURL地址
—→来到curl命令转代码工具—→复制上去就会自动转换成下面
因为我用的是python来做,所以转换成的是python的
多余的部分我们可以去掉不用,只用我们所需的。
代码如下:
#导包
import requests
#定制请求头,请求方式
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
#代理Ip
proxy_ip={'http:':'http://122.9.131.161:3128'}
#获取请求头,url地址
response = requests.get('https://www.douban.com/doulist/110142965/', headers=headers)
#请求状态码
print(response.status_code)
请求代码通过(status_code=200)的话,
2.就进行我们解析网页的操作
#解析网页
selector =etree.HTML(response.text)
list_222 = selector.xpath('//*[@id="item734016902"]/div/div[2]/div[6]/text()[1]')
print(list_222)
3.编码不统一的问题
不过有时候,我们明明做出来了,为什么还会显示失败呢?
多半是编码不统一的问题,就是你软件里的编码和网页的编码不统一。
例子:
解决方法:
#查看编码,若编码不同就统一 print(response.encoding) print(response.apparent_encoding) response.encoding=response.apparent_encoding
4.多观察xpath路径,找出其中的规律,便于更快更方便地查找信息
但是我还想查询更多的信息,一直利用这个方法就会变成这样:
感觉非常麻烦。。。。
通过观察xpath路径,我发现了其中的规律,遂改了下:
一个非常简易的循环,把我们所需要的信息连接在了一起。
当然也不止这一种方式,还有其他的方法。
5.给不完整的路径加个头
在豆瓣网进行爬取时,我遇到了路径不完整的问题。
例子:
我们可以明显看到这里只显示了一截路径,前面的部分被省去了。
没事,只要加上前面的部分就好了:
这里链接也显示可以直接跳转过去看了。