python抓取动态网页(:keep-alive:Mozilla/5.0(WindowsNT))
优采云 发布时间: 2022-01-11 17:07python抓取动态网页(:keep-alive:Mozilla/5.0(WindowsNT))
主持人:
连接:保持活动
升级不安全请求:1
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,像 Gecko) Chrome/5< @7.0.2987.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,zh-TW; q=0.2
提取请求头的重要部分,可以将代码改为:
3.3.3 发送POST请求
除了GET请求外,有时还需要发送一些以表单形式编码的数据。比如登录时,请求是POST,因为如果使用GET请求,会在URL中显示密码,非常不安全。如果要实现POST请求,只需要简单的给Requests中的data参数传入一个字典,请求时数据字典会自动编码为表单。
输出是:
{
“参数”:{},
“数据”:“”,
“表格”:{
"key1": "value1",
"key2": "value2"
},
…
}
可以看到form变量的值就是key_dict中输入的值,所以发送POST请求成功。
3.3.4 超时
有时爬虫会遇到服务器长时间不返回。这时候爬虫会一直等待,导致爬虫执行不顺畅。因此,可以使用 Requests 在 timeout 参数设置的秒数过去后停止等待响应。这意味着如果服务器在 timeout 秒内没有响应,则会返回异常。
让我们将此设置为 0.001 秒,看看抛出了什么异常。这是一个值设置,让大家体验超时异常的效果。一般将此值设置为 20 秒。
返回的异常是:ConnectTimeout: HTTPConnectionPool(host=' ',
port=80): 最大重试次数超出 url: / (由 ConnectTimeoutError(connection.HTTPConnection object at 0x0000000005B85B00>, 'Connection to timed out. (connect timeout=0.001)'))。
异常值表示,时间限制为0.001秒,连接地址的时间已到。
3.4请求爬虫练习:TOP250电影数据
本章练习项目的目的是获取豆瓣电影TOP250中所有电影的名字。网站地址是:。在这个爬虫中,请求头是根据实际浏览器定制的。
3.4.1 网站分析
打开豆瓣电影TOP250的网站,使用“check”功能查看网页的请求头,如图3-4所示。
按照3.3.2中的方法提取重要的请求头:
首页只有 25 部电影,如果要获取全部 250 页的电影,则需要获取总共 10 页的内容。
点击第二页可以发现网页地址变成了:
第三页的地址是:,很容易理解。对于每增加一个页面,在网页地址的起始参数中添加 25。
3.4.2 项目实践
通过上面的分析发现可以使用requests获取电影网页的代码,使用for循环进行翻页。其代码如下:
运行上面的代码,结果是:
1页响应状态码:200
lang="zh-cmn-Hans">
豆瓣电影 250 强
...
此时,结果只是网页的 HTML 代码,我们需要从中提取所需的电影名称。接下来,第 5 章将涉及解析网页内容。读者可以先使用下面的代码。至于对代码的理解,可以等到第五章再学习。
在上面的代码中,BeautifulSoup 用于解析网页并获取其中的电影名称数据。运行代码,结果是:
1页响应状态码:200
2页响应状态码:200
3页响应状态码:200
4页响应状态码:200
5页响应状态码:200
6页响应状态码:200
7页响应状态码:200
8页响应状态码:200
9页响应状态码:200
10页响应状态码:200
[《肖申克的救赎》、《这个杀手不太冷》、《霸王别姬》、《阿甘正传》、《美丽人生》、《千与千寻》、《辛德勒的名单》、《泰坦尼克号》、 《盗梦空间》、《机器人总动员》、《海上钢琴师》、《宝莱坞三傻烦恼》、《八公的故事》、《牛班的春天》、《大圣西游》、《教父》 》、《龙猫》、《杜鲁门的世界》、《乱世佳人》、《天堂电影院》、《当幸福来敲门》、《触不可及》、《搏击*敏*感*词*》、《十二怒汉》、 《无间道》、《熔炉》、《指环王:国王的劲敌》、《突破》、《天空之城》、《罗马假日》……]
3.4.3 个自习题
读者有时间可以练习进阶题:求TOP 250电影的英文名、港台名、导演、主演、上映年份、电影分级和评分。