【发布时间】:2020-02-08 16:02:53
【问题描述】:
我正在尝试使用 BeautifulSoup 从多个网页中抓取数据。这些网页中的每一个都具有相同的格式,并在末尾有一个唯一标识它们的代码,例如。 www.sample_000.com。问题是,如果我随机选择一个代码 123 并尝试抓取 www.sample_123.com,我将一无所获,因为该页面不存在。如果我尝试直接从浏览器打开它,我会收到 HTTP 404 错误。但是,如果我去主网站并选择适当的输入值来打开www.sample_123.com,它会加载得很好。
从主网站加载一次后,我现在可以在浏览器中独立抓取并打开它,而无需通过主网站。这是怎么回事?如何在不先通过主网站打开这些网页的情况下抓取这些网页?
更新:我尝试使用 Selenium 在抓取之前使用相应的输入加载每个网页。它现在可以工作,但是速度非常慢。如果有人推荐一种更快的方法,将不胜感激。
【问题讨论】:
-
您是否尝试过将 selenium 与 chromedriver 一起使用?
-
@qbbq 是解决这个问题的唯一方法吗?我从未使用过硒,但似乎很乏味。我必须抓取数千个这样的网页,每个网页都有不同的代码。
-
其他人可能有更优雅的方式,但我使用了很多 selenium,并且喜欢它处理页面脚本的方式(这听起来像你的网站正在使用的方式)。一旦你开始,它就不会那么乏味了。要打开网站,您可以使用以下代码:
chrome_path = r"path_to_chromedriver.exe" driver = webdriver.Chrome(chrome_path) driver.implicitly_wait(1) driver.maximize_window() link = "www.test.com/blah" driver.get(link)在不了解您的网站的情况下,我不知道您需要的选项(分页、单击链接等)。恕我直言 selenium 可以很好地处理脚本。 -
我会测试一下,谢谢!
-
你介意分享网址吗?
标签: python web-scraping beautifulsoup screen-scraping