【问题标题】:Scrape URL recursively and store them into a list递归地抓取 URL 并将它们存储到列表中
【发布时间】:2021-05-17 15:29:10
【问题描述】:

我有一个 for 循环来抓取 HTML 页面中的特定 url,我的目标是将所有抓取的 URL 存储到一个列表中。

for page in range(total_pages): #run through all pages
    url = token + str(page+1)
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'lxml') # parse page
    for link in soup.find_all('a', {'data-track': 'download'}, href=re.compile("atec")):
        all_atec = (link.get('href'))
        print(all_attec)

当我在 for 循环中打印 links 时,我拥有所有 URL:

http://www.cstb.fr/pdf/atec/GS07-H/AH191758_V2.pdf
http://www.cstb.fr/pdf/atec/GS07-H/AH191759_V2.pdf
http://www.cstb.fr/pdf/atec/GS20-U/AU14333_V1.pdf
http://www.cstb.fr/pdf/atec/GS02-C/AC2161731_V1.pdf
http://www.cstb.fr/pdf/atec/GS02-C/AC2161730_V1.pdf
http://www.cstb.fr/pdf/atec/GS02-C/AC2131565_V2.pdf

如果我在循环外打印links,我只有第一个 URL。如何将所有 URL 存储在列表中?

【问题讨论】:

    标签: python list loops web-scraping beautifulsoup


    【解决方案1】:

    就这么简单:

    all_urls = []
    for page in range(total_pages): #run through all pages
        url = token + str(page+1)
        r = requests.get(url)
        soup = BeautifulSoup(r.text, 'lxml') # parse page
        for link in soup.find_all('a', {'data-track': 'download'}, href=re.compile("atec")):
            all_atec = (link.get('href'))
            all_urls.append(all_atec)
    print(all_urls)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 2011-11-24
      • 2021-01-22
      • 1970-01-01
      相关资源
      最近更新 更多