在Python中发送json请求后在页面中加载更多链接

2024-05-26 07:45:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在解析这个URL以从一个具有无限滚动的框中获取链接。以下是发送请求的mo代码,以获取下10个链接:

import requests
from bs4 import BeautifulSoup
import urllib2
import urllib
import extraction
import json
from json2html import *

baseUrl = 'http://www.marketwatch.com/news/headline/getheadlines'
parameters2 = {
'ticker':'XOM',
'countryCode':'US',
'docType':'2007',
'sequence':'6e09aca3-7207-446e-bb8a-db1a4ea6545c',
'messageNumber':'1830',
'count':'10',
'channelName':'',
'topic':' ',
'_':'1479539628362'}
html2 = requests.get(baseUrl, params = parameters2)
html3 = json.loads(html2.text) # array of size 10 

在相应的HTML中,有一个元素类似于:

^{pr2}$

这说明有更多的项需要通过滚动down来加载,但我不知道如何使用json文件编写循环来获取更多链接。 我的第一次尝试是使用Beautiful Soup并编写以下代码来获取链接和ID:

url = 'http://www.marketwatch.com/investing/stock/xom' 
r = urllib.urlopen(url).read()
soup = BeautifulSoup(r, 'lxml')
pressReleaseBox = soup.find('div', attrs={'id':'prheadlines'}) 

然后检查是否还有更多的链接要抓取,获取下一个json文件:

loadingMore = pressReleaseBox.find('li',attrs={'class':'loading'})
while loadingMore != None:
    # get the links from json file and load more links

我不知道如何实现评论部分。你知道吗? 我没有义务使用beauthulsoup,任何其他的图书馆都可以。在


Tags: 代码fromimportcomjsonhttp链接www
1条回答
网友
1楼 · 发布于 2024-05-26 07:45:17

下面是如何加载更多json文件:

  1. 获取最后一个json文件,提取最后一项中键UniqueId的值。
    1. 如果值看起来像e5a00f51-8821-4fbc-8ac6-e5f64b5eb0f2:8499
      1. 提取e5a00f51-8821-4fbc-8ac6-e5f64b5eb0f2sequence
      2. 8499提取为messageNumber
      3. docId为空
    2. 如果值看起来像1222712881
      1. sequence为空
      2. messageNumber为空
      3. 1222712881提取为docId
  2. 将参数sequencemessageNumberdocId放入参数2中。在
  3. 使用requests.get(baseUrl, params = parameters2)获取下一个json文件。在

相关问题 更多 >