爬虫练习案例:交通路况

前言

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

分析

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

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

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

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

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

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

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

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

代码

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

import requests
import json

def parse_ajax_web():
    url = 'http://219.136.133.162/gztraffic/GetData.ashx?__r='
    #请求头信息
    headers = {
        "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",
        'x-requested-with': 'XMLHttpRequest'
    }
   
    response = requests.get(url, headers=headers)
    myjson = json.loads(response.text)
    return myjson

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

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

field_format = '{0:{5}^17}\t{1:{5}^4}\t{2:{5}^3}\t{3:{5}^4}\t{4:{5}^5}'
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

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值