【发布时间】:2020-03-28 19:06:59
【问题描述】:
我正在尝试通过抓取维基百科来收集政治家的姓名。 我需要从这个页面刮掉所有政党:https://it.wikipedia.org/wiki/Categoria:Politici_italiani_per_partito,然后为每个人刮掉该党内所有政治家的名字(对于我上面提到的链接中列出的每个政党)。
我写了以下代码:
from bs4 import BeautifulSoup as bs
import requests
res = requests.get("https://it.wikipedia.org/wiki/Categoria:Politici_italiani_per_partito")
soup = bs(res.text, "html.parser")
array1 = {}
possible_links = soup.find_all('a')
for link in possible_links:
url = link.get("href", "")
if "/wiki/Provenienza" in url: # It is incomplete, as I should scrape also links including word "Politici di/dei"
res1=requests.get("https://it.wikipedia.org"+url)
print("https://it.wikipedia.org"+url)
soup = bs(res1, "html.parser")
possible_links1 = soup.find_all('a')
for link in possible_links1:
url_1 = link.get("href", "")
array1[link.text.strip()] = url_1
但它不起作用,因为它不会为每一方收集名称。它收集所有政党(来自我上面提到的维基百科页面):但是,当我尝试抓取政党的页面时,它不会收集该政党内政客的姓名。
我希望你能帮助我。
【问题讨论】:
-
您的问题没有得到很好的描述。你说不收集每一方的名字是什么意思?
-
它首先收集所有政党(来自我上面提到的维基百科页面):但是,当我尝试抓取政党的页面时,它不会收集该政党内政客的姓名。跨度>
-
在您的代码中,您希望在哪里找到名称和各方?我无法理解您对
possible_links1和array1的意思 -
我在那里遇到了困难。在选择了所有包含 /wiki/Provenienza 的链接(指向政党的链接)后,我需要抓取每个链接以获取该政党内政客的名字。我展示了代码,但它没有做我需要做的事情,因为它是错误的并且有很多错误。
标签: python python-3.x web-scraping