Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用BeautifulSoup浏览所有搜索结果页面_Python_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 使用BeautifulSoup浏览所有搜索结果页面

Python 使用BeautifulSoup浏览所有搜索结果页面,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我似乎不能理解。 如何使用下一页链接导航到最后一页,并在没有找到“下一页”时停止解析,从而使BeautifulSoup解析每个页面。在这样的网站上 我尝试寻找下一个按钮元素名,我使用“find”来查找它,但不知道如何使它重复进行迭代,直到所有页面都被刮去 谢谢BeautifulSoup本身不加载页面。您需要使用类似于请求的东西,刮取您想要跟踪的URL,加载它并将其内容传递给另一个BS4服务器 import requests # Scrape your url r = requests.get

我似乎不能理解。 如何使用下一页链接导航到最后一页,并在没有找到“下一页”时停止解析,从而使BeautifulSoup解析每个页面。在这样的网站上

我尝试寻找下一个按钮元素名,我使用“find”来查找它,但不知道如何使它重复进行迭代,直到所有页面都被刮去


谢谢

BeautifulSoup本身不加载页面。您需要使用类似于
请求
的东西,刮取您想要跟踪的URL,加载它并将其内容传递给另一个BS4服务器

import requests

# Scrape your url
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser') # You can now scrape the new page

BeautifulSoup只提供工具,如何导航页面是您需要在流程图意义上解决的问题

以你提到的页面为例,点击一些页面,当我们在第1页时,url中似乎没有显示任何内容

htt...ru/moskva/transport
我们在页面的源代码中看到:

<div class="pagination-pages clearfix">
   <span class="pagination-page pagination-page_current">1</span>
   <a class="pagination-page" href="/moskva/transport?p=2">2</a>
页面似乎自动返回到第1页。太好了

现在我们有了制作汤圈所需的一切

不要每次都单击“下一步”,只要做一个url语句即可。您知道所需的要素

url = ht...ru/moskva/$searchterm?p=$pagenum
我假设交通是搜索词???我不知道,我看不懂俄语。但你明白了。构造url。然后打个电话

request =  requests.get(url)
mysoup = bs4.BeautifulSoup(request.text)
现在,您可以将整个过程包装在一个while循环中,除了第一次检查之外,每次都

mysoup.select['.pagination-page_current'][0].text == 1
也就是说,每次我们获取页面时,使用pagination-page_current类查找当前选定的页面,它返回一个数组,因此我们选择第一个元素[0]获取其text.text,并查看它是否等于1

这应该只在两种情况下是正确的。运行的第一页和最后一页。因此,您可以使用它来启动和停止脚本,或者以您想要的方式启动和停止脚本


这应该是正确执行此操作所需的全部内容。:)

没错。但是我需要Python来提取它自己的页面,而不是我将URL放入program@AleksandrAnisimov转到您的初始页面,使用BS提取到下一页的链接,加载下一页,冲洗,重复。基本上,我发现这些页面的url中有一种模式;这就是s={pagecount}。增量为120;第一页根本没有s=变量。如何将s=添加到搜索结果url的默认第一页,然后每下一页增加120?如果:如果页面上没有特定的数据,意味着我们通过了搜索结果的最后一页,需要停止,那么我该如何制作Python呢?;我不知道s=120*页变量是什么?当我点击你们链接的下一页时,它会显示$defaulturl?p=2,然后p=3等等。。。但如果对你来说,它显示s=120,那么240等等。。。我想你可以在120分钟前将pagenum定罪,然后继续。至于在构建url时如何处理第一页,只需添加注释,
page=”“
,然后在for循环或while循环结束时,下一页将是第2页
page=
,然后检查我们是否再次返回到第一页。如果我们有,那么这是一个停止的标志。我有一个变量“tag”-我在tags=soup.find_all中有一个链接列表('a'我正在浏览一个页面,查找URL:soup.find_all('a',class='result;,在一个给定的页面上,然后我需要导航到下一个页面直到结束。每个页面都应该进行url抓取,所以在每个while循环中,您都要为下一个页面构建url。第1页是在没有页面引用的情况下完成的。第2页是incorperrates?p=2,依此类推,每次您进行请求调用并解析该into beautiful soup。刮取数据,并更新下一页。继续,直到使用我在答案中显示的分页链接检测到您再次到达第1页。这应该足以完成此刮取任务。
request =  requests.get(url)
mysoup = bs4.BeautifulSoup(request.text)
mysoup.select['.pagination-page_current'][0].text == 1