我尝试寻找Next按钮元素名称,我使用'find'来查找它,但不知道如何重复进行迭代直到所有页面都被删除。
谢谢
答案 0 :(得分:2)
美丽的汤只会为您提供工具,如何浏览导航页面是您需要在流程图意义上解决的问题。
点击你提到的页面,点击几页,看来当我们在第1页时,网址中没有显示任何内容。
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>
让我们看一下当我们转到第2页时会发生什么
ht...ru/moskva/transport?p=2
<div class="pagination-pages clearfix">
<a class="pagination-page" href="/moskva/transport">1</a>
<span class="pagination-page pagination-page_current">2</span>
<a class="pagination-page" href="/moskva/transport?p=3">3</a>
完美,现在我们有了布局。在我们制作美味汤之前还要了解一件事。当我们访问最后一个可用页面的页面时会发生什么。在撰写本文时:40161
ht...ru/moskva/transport?p=40161
we change this to:
ht...ru/moskva/transport?p=40162
该页面似乎自动返回到第1页。太棒了!
所以现在我们拥有了制作汤圈所需的一切。
而不是每次点击下一个,只需制作一个网址声明。你知道所需要的元素。
url = ht...ru/moskva/$searchterm?p=$pagenum
我假设运输是搜索词???我不知道,我不能读俄语。但是你明白了。构建网址。然后做一个请求呼叫
request = requests.get(url)
mysoup = bs4.BeautifulSoup(request.text)
现在你可以在while循环中包装整个东西,每次除了第一次检查
mysoup.select['.pagination-page_current'][0].text == 1
这说,每次我们获取页面,通过使用类pagination-page_current找到当前选择的页面,它返回一个数组,所以我们选择第一个元素[0]得到它的文本.text并查看它是否等于1
这应该只适用于两种情况。你跑的第一页和最后一页。所以你可以使用它来启动和停止脚本,或者你想要的。
这应该是您正确执行此操作所需的一切。 :)
答案 1 :(得分:0)
BeautifulSoup本身不会加载页面。您需要使用requests
之类的内容,抓取您想要关注的网址,加载并将其内容传递给另一个BS4汤。
import requests
# Scrape your url
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser') # You can now scrape the new page