pythonbs4:如果满足某个条件,如何对另一个刮下的页面重复“For”循环?

2024-04-19 04:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个for循环,一旦它到达被刮取的页面中的最后一个search_result属性,它将使用新的被刮取的网页的数据重复该循环。你知道吗

for循环到达最后一个属性之后,它将在网页上查找链接,并用新的刮下的网页重复该循环。你知道吗

我已经写了下面的代码,但是循环不会重复它从原始网页的链接获得的新的刮页。你知道吗

import requests
from bs4 import BeautifulSoup

page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page, 'lxml')

for search_result in soup.find_all(attrs={"search-result-index":True}):
    print(search_result.name.text)

    # if last search result, get link to new web page and repeat loop for the new web page.
    if search_result == soup.find_all(attrs={"search-result-index":True})[-1]:
        page = requests.get(soup.select_one('li.a-last [href]')['href'], headers=headers)
        soup = BeautifulSoup(page, 'lxml') 

你对怎么做有什么想法吗?你知道吗


Tags: import网页forsearchget属性链接page
1条回答
网友
1楼 · 发布于 2024-04-19 04:28:32

像这样的事情??你知道吗

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}


def func_go(URL):
    page = requests.get(URL, headers=headers)
    soup = BeautifulSoup(page, 'lxml')
    for search_result in soup.find_all(attrs={"search-result-index":True}):
        print(search_result.name.text)

        if search_result == soup.find_all(attrs={"search-result-index":True})[-1]:
            URL = soup.select_one('li.a-last [href]')['href']
            func_go(URL)




func_go('www.example.com')

相关问题 更多 >