手把手教你爬取网站信息
如题,理解这一部分需要一定的Python基础,有些代码我不做详细解释了,但是用这个方法是确实可以爬到的。
此次用以下这个页面(可以用md5软件解密)
1476409DEDD7A55FE86915BC370A3ECD
爬取电影的详情数据
1. 在抓包⼯具中先定位到和浏览器地址栏的⽹址⼀样的数据包
①在页面中右击鼠标,点击检查,博主这里用的是Google浏览器
②在弹出来的页面中点击Network,然后再重新刷新一下网页
③在Name列表随意点击一项(单击即可)
④再按Ctrl+F调出搜索框,随意搜索一部列表中的电影,点击列表中的选项,此时搜索框右边的信息已经发生变化了,点击Headers即可定位到包含搜索数据的指定数据包。从指定数据包中就可以提取出url
继续把滚动条往下拉,拉到最底部,有一个User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36
这个是反UA反爬机制的代码,这个也要用到,可以先准备好,并放在代码的最开始
2. 查看请求参数
此页面的请求⽅式为get请求参数:这一点可以在Headers查看到:
点击Payload可以查看请求参数,把这一段复制进你的代码里,但是需要把这里的limit的值改为100,这样才是前100的电影,如果想要前200,改成200即可
3. 获取相应数据
response = requests.get(url=url,headers=head,params=pram)
这里要把get的三个参数都写进来,因为都用得到
4. 建一个文件来存储爬到的信息
page_text = response.json()
fp = open("./douban.txt","w",encoding="utf8")
此处注意编码和解码的问题,如果没有encoding=“utf8”,可能会报错。
- 用循环来遍历前100个"title"和"score"字段
fp = open("./douban.txt","w",encoding="utf8")
for dic in page_text:
title = dic['title']
score = dic['score']
fp.write(title+':'+score+'\n')
6. 源代码
import requests
head={#存放需要伪装的头信息
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"
}
pram={#请求参数
"type": "13",
"interval_id": "100:90",
"action": "",
"start": "0",
"limit": "100",
}
url='https://movie.douban.com/j/chart/top_list'
response = requests.get(url=url,headers=head,params=pram)
#获取响应数据
#json()可以将获取到的json格式的字符串进⾏反序列化
page_text = response.json()
fp = open("./douban.txt","w",encoding="utf8")
for dic in page_text:
title = dic['title']
score = dic['score']
fp.write(title+':'+score+'\n')
print(title,'爬⾍保存成功!')
7. 运行结果