美文网首页
pyspider爬虫iframe blocked解决:pyspi

pyspider爬虫iframe blocked解决:pyspi

作者: cainye | 来源:发表于2018-08-02 10:18 被阅读0次

    写文初衷

    • 让其他人少走弯路。

    需求:爬取事件的标题、时间和url地址

    链接:http://www.chinamoney.com.cn/fe/Channel/45437923?tbnm=%25E6%259C%2580%25E6%2596%25B0&tc=null&isNewTab=1

    微信截图_20180802093258.png

    iframe blocked问题出现

    列表页的标题和时间可能是动态加载的,pyspider框架里面显示iframe blocked(加了fetch_type='js'也没用),尝试找一下JSON地址


    微信截图_20180802093119.png 微信截图_20180802093137.png

    找JSON地址的步骤:

    • 在列表页F12打开开发者工具,选择network里面的XHR,F5刷新发现多出来几个文件
    • 每个文件点开看一下,发现最后一个文件是我们需要的,得到地址1:http://www.chinamoney.com.cn/ags/ms/cm-u-notice-issue/bIssuAn
      image.png
    • 往下翻,翻到最后的form data,选择view source,得到地址2:typeCode=null&isNewTab=1&pageNo=1&pageSize=30&sDate=2018-8-6&eDate=2018-8-7&limit=1&timeln=1


      image.png
      image.png

    JSON地址 = 地址1 + ‘?’ + 地址2(中间加一个‘?’拼接)

    http://www.chinamoney.com.cn/ags/ms/cm-u-notice-issue/bIssuAn?typeCode=null&isNewTab=1&pageNo=1&pageSize=30&sDate=2018-07-3&eDate=2018-8-2&limit=1&timeln=1

    JSON页(事件列表页的json)

    • title:标题
    • publishDateStr:发布时间
    • draftPath:事件URL(有些事件url为空,需要进一步解析json)


      image.png

    进一步分析url为空的事件

    回到列表页,随便点击一个列表页JSON页中url为空的事件,通过同样的方法,得到详情页的JSON地址(简称JSON2),在JSON2里面通过同样的方法获得所需要的标题、发布时间和url。(F12,F5,拼接等操作)

    JSON2地址:

    http://www.chinamoney.com.cn/ags/ms/cm-u-notice-an/viewBondIssu?bondCode=3979882019&channelId=2560%2C2583%2C2563&pageNo=1&pageSize=10&timeln=0
    这仅仅是一个事件的json2,想拿到所有的,bondCode=3979882019中的3979882019应该替换成each['bondDfndCd']
    需要注意的就是,response.json['records']是一个列表,里面每一条对应每一个事件,通过for我们可以拿到每一个事件的bondCode:代码如下

            for each in response.json['records']:
                return each['bondDfndCd']
    

    JSON2页面(url为空的事件详情页的json)

    获得了url为空的事件的标题名称、事件和url


    image.png

    代码稍后有空再弄

    相关文章

      网友评论

          本文标题:pyspider爬虫iframe blocked解决:pyspi

          本文链接:https://www.haomeiwen.com/subject/dsqjvftx.html