想要从搜索结果以及下一页获取网址

时间:2019-11-11 15:28:28

标签: python beautifulsoup request

我无法从网站上抓取数据。我可以抓取文本,但是当我尝试提取url时出现错误。

这是网址:https://www.horizont.net/suche/OK=1&i_q=der&i_sortfl=pubdate&i_sortd=desc&currPage=1

到目前为止,我正在使用它:

r=requests.get('https://www.horizont.net/suche/OK=1&i_q=der&i_sortfl=pubdate&i_sortd=desc&currPage=1')
c = r.content
soup = BeautifulSoup(c, 'html.parser')
all = soup.find_all('a',  {'class': 'ArticleTeaserSearchResultItem_link'}, href = True)

for item in all:
    print(item.find_all('h2')[0].text)

输出:

Schweizer Illustrierte und L'illustré rücken näher zusammen 
"En Garde" und andere Geschichten über Mut und Beharrlichkeit 
Hüttenzauber - der TV-Spot zu Weihnachten 
Neuwagen in Deutschland müssen künftig DAB+ empfangen können 
Schiess Werbig mit neuen Storys 
Thjnk-Manager Sebastian Schlosser kommt als Chief Marketing Officer 
Die Einreichungsphase läuft bis zum 30. November 
Ipsos / Sinus / YouGov / Appinio / Axis / GfK 
Pro Sieben Sat 1 plant Audio-Streaming-Plattform 
Adidas und DFB blasen in Streifenoptik zum Angriff auf den EM-Titel

问题1: 我仍然无法从搜索中删除网址

问题2: 搜索结果包含大约15000页,我要抓取所有网址。

1 个答案:

答案 0 :(得分:1)

提供的链接不正确。我更改了链接。 但是,由于您已经提到需要多达15000页,因此我为此做了循环。 要获取所有链接,您需要从链接获取href属性。

all_links=[]
for i in range(1,15001):
    url='https://www.horizont.net/suche/?OK=1&i_q=der&i_sortfl=pubdate&i_sortd=desc&currPage={}'.format(i)
    print("url: " +url)
    r = requests.get(url)
    c = r.content
    soup = BeautifulSoup(c, 'html.parser')
    all = soup.find_all('a', {'class': 'ArticleTeaserSearchResultItem_link'}, href=True)
    for item in all:
        print("https://www.horizont.net" + item['href'])
        all_links.append("https://www.horizont.net" + item['href'])

print(all_links)

现在,如果最后执行print(all_links),您将获得15000页列表中的所有链接。