gpt4 book ai didi

python - 使用 "load more results"按钮抓取页面

转载 作者:行者123 更新时间:2023-11-28 22:21:14 25 4
gpt4 key购买 nike

我正在尝试使用 requestsBeautifulSoup/Lxml 抓取以下页面

https://www.reuters.com/search/news?blob=soybean&sortBy=date&dateRange=all

这是一种具有加载更多结果 按钮的页面。我发现很少有页面解释如何这样做,但不在 requests 的框架内。

我知道我应该再花几个小时研究这个问题,然后再在这里提问,以证明我已经尝试过了。

我已经尝试查看检查 Pane 、网络选项卡等,但我对理解如何与 javascript 交互的请求仍然有点陌生。

我不需要一个完整的脚本/解决方案作为答案,只需要一些关于如何使用 requests 完成这个非常典型的任务的指示,以节省我宝贵的研究时间。

提前致谢。

最佳答案

这里有一个快速脚本应该展示如何使用 Selenium 完成此操作:

from selenium import webdriver
import time

url = "https://www.reuters.com/search/news?blob=soybean&sortBy=date&dateRange=all"
driver = webdriver.PhantomJS()
driver.get(url)
html = driver.page_source.encode('utf-8')
page_num = 0

while driver.find_elements_by_css_selector('.search-result-more-txt'):
driver.find_element_by_css_selector('.search-result-more-txt').click()
page_num += 1
print("getting page number "+str(page_num))
time.sleep(1)

html = driver.page_source.encode('utf-8')

我不知道如何使用 requests 来做到这一点。路透社好像有很多关于大 bean 的文章。在我写完这个答案时,我已经完成了 250 多个“页面加载”。

一旦你抓取了所有或一些大量的页面,你就可以通过将 html 传递给 Beautiful Soup 来抓取数据:

soup = BeautifulSoup(html, 'lxml')
links = soup.find_all('div', attrs={"class":'search-result-indiv'})
articles = [a.find('a')['href'] for a in links if a != '']

关于python - 使用 "load more results"按钮抓取页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com