我正在尝试使用BeautifulSoup和Python学习网页报废。
我从网站上删除了一个网址列表,我希望显示格式为" / askwiki / questions / like的所有链接的文本 " / askwiki /问题/ 4"或" / askwiki / questions / 123"。
import requests
from bs4 import BeautifulSoup
url = 'http://unistd.herokuapp.com/askrec';
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml");
links = soup.find_all("a")
for link in links:
if #url is of my desired format
print link.text
我应该在if语句中写什么。
我是python和web报废的新手。这可能是一个非常愚蠢的问题,但我没有在那里写什么。
我试过
如果" / askwiki / questions / [0-9] +"在link.get(" href")中:
如果" / askwiki / questions / [0-9]?"在link.get(" href")中:
但它不起作用。
P.S - 还有其他类似的链接' askwiki / questions / tags'和/ askwiki / questions / users'。
答案 0 :(得分:1)
编辑:使用正则表达式仅识别末尾有数字的那些。
import re
for link in links:
url = str(link.get('href'))
if re.findall('/askwiki/questions/[\d]+', url):
print(link)
答案 1 :(得分:1)
你走在正确的轨道上!缺少的组件是re module。
我认为你想要的是这样的:
import re
matcher = re.compile(r"/askwiki/questions/[0-9]+")
if matcher.search(link.get("href")):
print(link.text)
或者,您可以删除数字组件,如果您只是在“/ askwiki / questions”中寻找链接:
if "/askwiki/questions" in link.get("href")
print(link.text)
答案 2 :(得分:0)
尝试类似:
for link in links:
link = link.get("href")
if link.startswith("/askwiki/questions/"):
print(link.test)
答案 3 :(得分:0)
如果你想使用正则表达式(即你拥有的,[0-9] +),你必须导入re库。查看此link到使用re查找模式的文档!