2017-10-20 26 views
-1

我正在嘗試使用BeautifulSoup和Python學習網絡報廢。如何檢查url是否爲Python中的格式「/ askwiki/questions/<any number>」

我從網站上刪除了一個網址列表,我想要顯示「/ askwiki/questions/like like 」/ askwiki/questions/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以及網絡報廢。這可能是一個非常愚蠢的問題,但我沒有得到什麼寫什麼there。

我試過了,就像

if "/askwiki/questions/[0-9]+ " in link.get("href"):

if "/askwiki/questions/[0-9]?" in link.get("href"):

但它不起作用。

P.S - 還有其他的鏈接,如'askwiki /問題/標籤'和/ askwiki/questions/users'。

回答

1

編輯:使用正則表達式來識別那些只在結尾的數字。

import re 

for link in links:  
    url = str(link.get('href')) 
    if re.findall('/askwiki/questions/[\d]+', url): 
     print(link) 
+0

對不起,但事實並非如此。還有其他鏈接,比如''/ askwiki/questions/tags'或'/ askwiki/questions/users'。 @ jack6e –

+0

你只想要那些'/#'? – jack6e

+0

是的!我只想要那些'/ askwiki/questions/X'的人。 X應該只是任意數字的數字。它不應該是除0-9之外的任何其他字符。 –

0

嘗試類似:

for link in links: 
    link = link.get("href") 
    if link.startswith("/askwiki/questions/"): 
     print(link.test) 
0

如果你想使用正則表達式(即你有什麼,[0-9] +),你必須導入re庫。看看這個link到使用重新找到模式的文檔!

1

您正確的道路!缺少的組件是re module

我想你想要的是這樣的:

import re 
matcher = re.compile(r"/askwiki/questions/[0-9]+") 
if matcher.search(link.get("href")): 
    print(link.text) 

或者,你能把多少分量,如果你只是真的期待着有着「/ askwiki /問題」鏈接:

if "/askwiki/questions" in link.get("href") 
    print(link.text) 
+0

謝謝。由於你的學習,瞭解了很多關於重新模塊的知識:) –