2016-11-05 9 views
1

私はこのボットを使って特定のページからURLを抽出しています。私はすべてのリンクを抽出してリストに入れました。現実のurl(httpまたはhttpsで始まる他のサイトへのリード)をリストから外して別のリストに追加したり、 tは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のリストが埋め込まれます。多くの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.contentの代わりにhtml_content = r.textを使用する必要があります。 r.textは適切なエンコーディングを使用します。

関連する問題