我需要解析来自其他网址的所有链接(但我只需要获取链接,这些链接具有域的公共域,我应该解析它)。
我用
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
但是此代码返回所有以/
开头的链接。如何将此限制为属于域的链接,我解析的内容?
答案 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)