2016-11-05 78 views
1

我正在研究從特定頁面提取url的bot。我已經提取了所有鏈接並將它們放入列表中,現在我似乎無法從列表中獲取實際的URL(導致其他網站以http或https開頭),並將它們附加到另一個列表中,或者刪除那些不包含「從http開始。在此先感謝從列表python中提取特定元素2.7

import urllib2 
import requests 
from bs4 import BeautifulSoup 

def main(): 
    #get all the links from bing about cancer 
    site = "http://www.bing.com/search?q=cancer&qs=n&form=QBLH&pq=cancer&sc=8-4&sp=-1&sk=&cvid=E56491F36028416EB41694212B7C33F2" 
    urls =[] 
    true_links = [] 
    r = requests.get(site) 
    html_content = r.content 
    soup = BeautifulSoup(html_content, 'html.parser') 
    links = soup.find_all("a") 
    for link in links: 
     link = link.get("href") 
     urls.append(str(link)) 
     #urls.append(link.get("href")) 

    #print map(str, urls) 
    #REMOVE GARBAGE LINKS 

    print len(urls) 
    print urls 

main() 
+1

你能詳細說明這個問題嗎?如果我在寫代碼的時候運行你的代碼,那麼'urls'就會填充一個URL列表,其中許多指向除bing之外的其他站點(例如'...'http://www.coursera.org/course/ clinicaltrials','http://www.coursera.org/course/clinicaltrials','http://www.khanacademy.org/science/health-and-medicine/respiratory-system-diseases/lung-cancer/v/肺癌併發症',...')你能解釋你得到的結果與你想要的結果有什麼不同嗎? – larsks

+0

我想鏈接到一個實際的網站,而不是一個腳本或樣式表(例如我希望http://www.webmd.com/cancer/default.htm不是/script.js或/styles.css – MFK34

回答

0

您可以使用urlparse.urljoin

link = urlparse.urljoin(site, link.get("href")) 

這將創建一個絕對URL出相對的人的。您也應該使用html_content = r.text而不是html_content = r.contentr.text負責使用正確的編碼。