こすることによって、情報の収集

still_learning:

私はウィキペディアをこすることにより、イタリアの政治家の名前を収集しようとしています。:私は必要があるだろうと、このページから、すべての当事者をこすりすることですhttps://it.wikipedia.org/wiki/Categoria:Politici_italiani_per_partitoそれらのそれぞれは、に記載されている各当事者のために(その党内の政治家のすべての名前をこすり、その後のために、私は上記のことリンク)。

たとえば、ページ上の最初のパーティはあるhttps://it.wikipedia.org/wiki/Categoria:Politici_di_Alleanza_Democraticaので、私はこのページをこすりし、次の名前を取得する必要があります:

Ferdinando Adornato
Giuseppe Ayala
Giorgio Benvenuto
Enzo Bianco
Giorgio Bogi
Willer Bordon
Franco Castellazzi
Fabio Ciani
Oscar Giannino
Giorgio La Malfa
Miriam Mafai
Pierluigi Mantini
Ferdinando Schettino
Mariotto Segni
Giulio Tremonti

私は、次のコードを書きました:

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

それは各当事者の名前を収集していないとして、それは、仕事をしません。それは(私は上記のことをWikipediaのページから)すべての当事者を収集します。私は当事者のページをこすりしようとすると、しかし、それは党内政治家の名前を収集することはありません。

私はあなたが私を助けることができると思います。

QHarr:

あなたは、最初のページと、ループからそれらのURLをURLやパーティの名前を収集し、そのキーのパーティ名で辞書に関連した政治家の名前のリストを追加することができます。あなたは、セッションオブジェクトを使用することから、効率を得ることにより、基礎となるTCP接続を再利用するでしょう

from bs4 import BeautifulSoup as bs
import requests

results = {}

with requests.Session() as s: # use session object for efficiency of tcp re-use
    s.headers = {'User-Agent': 'Mozilla/5.0'}
    r = s.get('https://it.wikipedia.org/wiki/Categoria:Politici_italiani_per_partito')
    soup = bs(r.content, 'lxml')
    party_info = {i.text:'https://it.wikipedia.org/' + i['href'] for i in soup.select('.CategoryTreeItem a')} #dict of party names and party links

    for party, link in party_info.items():
        r = s.get(link)
        soup = bs(r.content, 'lxml')
        results[party] = [i.text for i in soup.select('.mw-content-ltr .mw-content-ltr a')] # get politicians names 

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=365384&siteId=1