美文网首页
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