如何在每次程序运行时为 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)
我有以下代码来抓取 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)