Python:解析来自某个URL的所有链接

时间:2017-01-24 13:18:35

标签: python regex beautifulsoup urllib

我需要解析来自其他网址的所有链接(但我只需要获取链接,这些链接具有域的公共域,我应该解析它)。

我用

pages = set()
def get_links(url, page_url):
    global pages
    html = urlopen(url + page_url)
    page = BeautifulSoup(html, "html.parser")
    for link in page.findAll("a", href=re.compile("^(/)")):
        if 'href' in link.attrs:
            if link.attrs['href'] not in pages:
                new_page = link.attrs['href']
                pages.add(new_page)
                try:
                   get_links(url, new_page)
                except:
                    continue
    return pages

但是此代码返回所有以/开头的链接。如何将此限制为属于域的链接,我解析的内容?

2 个答案:

答案 0 :(得分:1)

for a in soup('a', href=re.compile(r'^/ru/online_panels')):
    print(a['href'])

出:

/ru/online_panels/
/ru/online_panels/
/ru/online_panels/panel_quality/

这个想法是一样的,把^之后的字符串放到匹配以该字符串开头的所有hrefs

答案 1 :(得分:0)

使用以下正则表达式来提取href:

domain = re.escape('mydomain.com')
regex = re.compile(r'(https?:\/\/)?(\w+\.)*%s(/[^\'"\s]+)?' % domain)