如何检查网址格式是否为&#34; / askwiki / questions / <any number =“”>&#34;在Python中

时间:2017-10-20 16:51:14

标签: python regex

我正在尝试使用BeautifulSoup和Python学习网页报废。

我从网站上删除了一个网址列表,我希望显示格式为&#34; / askwiki / questions / like的所有链接的文本 &#34; / askwiki /问题/ 4&#34;或&#34; / askwiki / questions / 123&#34;。

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报废的新手。这可能是一个非常愚蠢的问题,但我没有在那里写什么。

我试过

  

如果&#34; / askwiki / questions / [0-9] +&#34;在link.get(&#34; href&#34;)中:

     

如果&#34; / askwiki / questions / [0-9]?&#34;在link.get(&#34; href&#34;)中:

但它不起作用。

P.S - 还有其他类似的链接&#39; askwiki / questions / tags&#39;和/ askwiki / questions / users&#39;。

4 个答案:

答案 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查找模式的文档!