循环多个URL<;python抓取问题>;(来自同一网站的2个不同URL)

循环多个URL<;python抓取问题>;(来自同一网站的2个不同URL),python,python-3.x,web-scraping,Python,Python 3.x,Web Scraping,伙计们,我有一个网站,我想搜集公司名称,这些是婚礼策划人,基本上,我必须逐个城市/州获取URL,然后我必须将其放入我在朋友帮助下制作的简单代码中,现在的问题是,当我尝试将多个URL放入字符串时,它不起作用,让我分享: import requests from bs4 import BeautifulSoup as BS for x in range(1,200): url = 'https://www.theknot.com/marketplace/wedding-pla

伙计们,我有一个网站,我想搜集公司名称,这些是婚礼策划人,基本上,我必须逐个城市/州获取URL,然后我必须将其放入我在朋友帮助下制作的简单代码中,现在的问题是,当我尝试将多个URL放入字符串时,它不起作用,让我分享:

import requests

from bs4 import BeautifulSoup as BS


for x in range(1,200):

        url = 'https://www.theknot.com/marketplace/wedding-planners-suffolk-va?page='

        r = requests.get(url+str(x))
        soup = BS(r.text, 'html.parser')

        #week = soup.select('.LinesEllipsis.vendor-name--55315.primaryBold--a3d1e.body1--24afd')
        week = soup.find_all(class_='LinesEllipsis vendor-name--55315 primaryBold--a3d1e body1--24afd')

        for item in week:
            print(item.text)

for x in range(1,200):

        url = 'https://www.theknot.com/marketplace/wedding-planners-plano-tx?page='

        r = requests.get(url+str(x))
        soup = BS(r.text, 'html.parser')

        #week = soup.select('.LinesEllipsis.vendor-name--55315.primaryBold--a3d1e.body1--24afd')
        week = soup.find_all(class_='LinesEllipsis vendor-name--55315 primaryBold--a3d1e body1--24afd')

        for item in week:
            print(item.text)
因此,这背后的逻辑是,从萨福克弗吉尼亚州的萨福克获取公司名称,然后从普莱诺德克萨斯州的普莱诺获取公司名称,并将它们合并在一起,这将是最后的演练。但无论我在萨福克弗吉尼亚州的公司之后尝试输入什么,他都会删除它,并只从1个链接(
URL
)中提供公司名称。。。我卡住了-_-


我知道这是非常简单的事情,但我无法破解它哈哈。如果有人能在我离开医院之前提供帮助,那就太好了,在我手术后,我将参加一些python课程。

您的代码包含大量可以避免的重复。因为您要查找的类在每个页面上都是相同的,所以您唯一要更改的变量是url。我们可以使用python中的列表理解来创建一个包含不同网站和URL的简单列表

注意:还要检查可用的页面数,这样您就不会只是请求一堆空页面了

导入请求
从bs4导入BeautifulSoup作为BS
urlList=[f'https://www.theknot.com/marketplace/wedding-planners-suffolk-va?page={i} '对于范围内的i(1200)]+\
[f'https://www.theknot.com/marketplace/wedding-planners-plano-tx?page={i} '对于范围内的i(1200)]
对于url列表中的url:
r=请求。获取(url)
soup=BS(r.text,'html.parser')
week=soup.find_all(class='LinesEllipsis供应商名称--55315 primaryBold--a3d1e body1--24afd')
对于周中的项目:
打印(项目.文本)

是的,我知道重复是个问题,但我做了和你在这里写的一样的代码,但它不起作用,这就是为什么我发布了上面的代码(重复),因为即使你在这里提供的内容不起作用,它也只提供第一个URL(萨福克弗吉尼亚州)的结果,它完全忽略了第二个URL(plano tx),我只是不明白为什么…--我在想,重复的代码可能会提供更好的工作结果,但它还是缺少一些东西…它确实运行第二个url,但在它开始报告第二个链接之前,您可能需要等待一段时间。如果您注释掉url列表的第一部分,只运行第二个url,您将看到它给出了一些结果。