从页面和下一页获取URL

2024-10-05 14:28:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从页面获取所有的url链接。我正在使用此链接

https://www.horizont.net/suche/?OK=suchen&OK=suchen&i_sortfl=pubdate&i_sortd=desc&i_q=der

此链接基于显示不同文章的搜索查询。每页大约有9篇文章。所以我想从网页上得到所有的网址链接作为一个列表

我想尝试的第二步是,当从页面中提取所有链接时,它会自动打开第二个页面并从那里获取所有链接

enter image description here

所以,有大约15194页,所以我想从页面获得所有的文章超链接

到目前为止,我正在努力做到这一点:

from BeautifulSoup import BeautifulSoup
import urllib2
import re

def getLinks(url):
    html_page = urllib2.urlopen(url)
    soup = BeautifulSoup(html_page)
    links = []

    for link in soup.findAll('a', attrs={'href': re.compile("^http://")}):
        links.append(link.get('href'))

    return links

print( getLinks("https://www.horizont.net/suche/?OK=suchen&OK=suchen&i_sortfl=pubdate&i_sortd=desc&i_q=der") )

我现在面临的问题是,我从网站上得到的每一个网址,但我只需要哪些是搜索结果,也从搜索结果的下一页


Tags: httpsimporturlnet链接wwwok页面
1条回答
网友
1楼 · 发布于 2024-10-05 14:28:21

您可以使用链接的element class属性来提取href:

for link in soup.findAll ('a', attrs = {'href': re.compile ("^ http: //")}, class _ = "ArticleTeaserSearchResultItem_link"):

如果您要浏览所有页面并收集所有文章的url,我可以建议您更改链接本身的页面值,直到链接有效:

i = 1
urls = []
while True:

    url = f"https://www.horizont.net/suche/?OK=1&i_q=der&i_sortfl=pubdate&i_sortd=desc&currPage={i}"
    try:
        def getLinks(url):
            html_page = urllib2.urlopen(url)
            soup = BeautifulSoup(html_page)
            links = []

            for link in soup.findAll('a', attrs={'href': re.compile("^http://")}, class_="ArticleTeaserSearchResultItem_link"):
                links.append(link.get('href'))

            return links

    urls.append(getLinks(url))

    except:
        break

    i += 1

目前我还没有机会调试我的代码,但我希望我能帮助你。祝你好运

相关问题 更多 >