我正在试图抓一个网站。这是对此的延续 soup.findAll is not working for table
我能够获得所需的数据,但该网站有多个页面,这些页面因日而异。有些日子,它可能是20页,另一页是33页。我试图通过获取最后一页元素How to scrape the next pages in python using Beautifulsoup来实现此解决方案 但当我到网站上的寻呼机div我想要刮,我找到了这种格式
<a class="ctl00_cph1_mnuPager_1" href="javascript:__doPostBack('ctl00$cph1$mnuPager','32')">32</a>
<a class="ctl00_cph1_mnuPager_1">33</a>
如果页面的数量每天都在变化,我如何刮取网站中的所有页面? 顺便说一句,页面网址不随页面更改而改变。
答案 0 :(得分:0)
答案 1 :(得分:0)
我将学习如何使用Selenium - 它在处理BS4无法完成工作的情况下简单有效。
您可以使用它登录网站,在搜索框中输入密钥,然后点击屏幕上的按钮。更不用说,你可以通过浏览器观察它正在做什么。
即使我在BS4中做了一些事情来监控抓取项目的进展,我也会使用它。
答案 2 :(得分:0)
就像有些人提到过的,你可能想看看硒。我写了一篇博文来做这样的事情:http://danielfrg.com/blog/2015/09/28/crawling-python-selenium-docker/
现在使用chrome和firefox无头的东西要好得多。
答案 3 :(得分:0)
好的,如果我没理解错的话,您要抓取的页面数量是不确定的?如果是这种情况,我也有类似的问题。查看检查的页面,看看是否有元素不存在但存在于有内容的页面上。
在我的 for 循环中使用
`pages = list(map(str, range(1, 5000))) /5000 只是一个很大的数字 搜索不会达到那么高。
对于 n 页: base_url = '这里的网址' url = base_url + n /n 是我的url末尾的页数
/this is the element that didn't exist after the pages with content finished
figure = soup.find_all("figure")
if figure:
pass
else:
break /would break out of the page iterations and jump to my other listing in
another url after there wasn't any content left on the last page`
我希望这对某些人有所帮助,或者有助于涵盖您所需要的内容。