如何在每次程序运行时为 beautifulsoup scraper 更改 URL(无需手动执行)?

How to change URL for beautifulsoup scraper every time the program runs (without doing it manually)?

我有以下代码来抓取 Reddit 用户名:

    from bs4 import BeautifulSoup
    from requests import get
    from fake_useragent import UserAgent
    
    ua = UserAgent()
    
    
    def lovely_soup(u):
        r = get(u, headers={'User-Agent': ua.chrome})
        return BeautifulSoup(r.text, 'lxml')
    
    
    url = 'https://old.reddit.com/r/aww'
    soup = lovely_soup(url)
    
    titles = soup.findAll('a', {'class': 'author'})
    
    for title in titles:
        print(title.text)

但是我有一个很长的 URL 列表,我想从中抓取 Reddit 用户名。我真的很想避免在 运行 之间手动替换 URL。有什么方法可以让它每次 运行 时替换 URL(使用我提供的 URL 列表),而只是自动 运行 直到 URLs 中的 运行s?

如果重要的话,我 运行 在 PyCharm 的虚拟环境中进行此操作。谢谢。

我尝试过手动操作,但很快就精疲力尽了。

我建议迭代 urls,例如您可以执行以下操作:

for url in urls:
    soup = lovely_soup(url)
    titles = soup.findAll('a', {'class': 'author'})

    for title in titles:
        print(title.text)

其中 urls 是所有 urls 的列表,例如["www.google.com", "www.bbc.co.uk", ...]

上述解决方案为每个 url 打印 title.text。您可以将其稍微修改为存储它们的下方,并在最后一次打印它们:

authors = set()
for url in urls:
    soup = lovely_soup(url)
    titles = soup.findAll('a', {'class': 'author'})

    for title in titles:
        authors.add(title.text)

print(authors)