当前位置:   article > 正文

爬虫练习案例:交通路况_python 爬取实时路况

python 爬取实时路况

前言

      除了一些比较常规的网页,还存在一些结构更复杂的网页,通过分析学习,提升爬虫技术。

分析

      想爬取广州交通信息网中关于重点区域路况的内容

     通过F12查看页面元素,觉得可以实现抓取,结果实操时发现了问题

  1. response = requests.get(url, headers=headers)
  2. json = response.content.decode()

     返回的信息中并没有任何有关数据,一查看才知道,网页用了iframe嵌套页面

      由于iframe标签中含有src属性,再次对新url进行requests,还是以失败告终,只抓取到字段,而值却没有显示

      没有数据,考虑可能是异步加载数据。点击F12,选择NetWork下的XHR,刷新页面

     打开第一个页面,结果找到了数据

     由此找到了最终爬取的页面网址(重点区域、重点通道的数据都在这里

代码

       找到实际爬取的页面后,用json提取就能获取想要的数据了。

  1. import requests
  2. import json
  3. def parse_ajax_web():
  4. url = 'http://219.136.133.162/gztraffic/GetData.ashx?__r='
  5. #请求头信息
  6. headers = {
  7. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0",
  8. 'x-requested-with': 'XMLHttpRequest'
  9. }
  10. response = requests.get(url, headers=headers)
  11. myjson = json.loads(response.text)
  12. return myjson

       注:网站每五分钟更新一次数据,需要全天数据的话就每隔五分钟抓取一次。

  1. field_format = '{0:{4}^7}\t{1:{4}^4}\t{2:{4}^4}\t{3:{4}^4}'
  2. value_format = '{0:{4}^7}\t{1:^9}\t{2:{4}^4}\t{3:^7}'

  1. field_format = '{0:{5}^17}\t{1:{5}^4}\t{2:{5}^3}\t{3:{5}^4}\t{4:{5}^5}'
  2. value_format = '{0:{5}^17}\t{1:{5}^4}\t{2:{5}^3}\t{3:{5}^7}\t{4:{5}^7}'

    链接:python之中英文输出对齐

    链接:获取高德地图路况信息

    其他:百度道路信息爬取

其他

       XHR,全称为XMLHttpRequest,用于与服务器交互数据,是ajax功能实现所依赖的对象。XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。

案例

    爬虫练习案例:爬取天气并可视化

    爬虫练习案例:使用代理IP

    爬虫练习案例:爬取天气定时发送至微信/邮箱

    爬虫练习案例:豆瓣电影Top250

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/418676
推荐阅读
相关标签
  

闽ICP备14008679号