python抓取动态网页(:keep-alive:Mozilla/5.0(WindowsNT))

优采云 发布时间: 2022-01-11 17:07

  python抓取动态网页(: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电影的英文名、港台名、导演、主演、上映年份、电影分级和评分。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线