VIDTAKER.COM

Q&A

Webページから取得リンクスープpythonと美しいを使用して


どのようにウェブページのリンクを取得し、リンクのPythonを使用してURLアドレスをコピーして?



4 Replies

1)

ここでは短い抜粋のbeautifulsoupでSoupStrainerクラスを使用している:

import httplib2
from BeautifulSoup import BeautifulSoup, SoupStrainer

http = httplib2.Http()
status, response = http.request('http://www.nytimes.com')

for link in BeautifulSoup(response, parseOnlyThese=SoupStrainer('a')):
    if link.has_key('href'):
        print link['href']

のbeautifulsoupのマニュアルは、実際にはかなり良いですが、典型的なシナリオの数をカバー:

http://www.crummy.com/software/BeautifulSoup/documentation.html

を編集:私はSoupStrainerクラスをあなたが何を事前に解析している知っていれば、もう少し効率的(メモリと賢明な速度)、ですので、使用してください。


2)

import urllib2
import BeautifulSoup

request = urllib2.Request("http://www.gpsbasecamp.com/national-parks")
response = urllib2.urlopen(request)
soup = BeautifulSoup.BeautifulSoup(response)
for a in soup.findAll('a'):
  if 'national-park' in a['href']:
    print 'found a url with national-park in the link'

3)

単にリンクを取得するため、B.soup、正規表現なし:

import urllib2
url="http://www.somewhere.com"
page=urllib2.urlopen(url)
data=page.read().split("</a>")
tag="<a href=\""
endtag="\">"
for item in data:
    if "<a href" in item:
        try:
            ind = item.index(tag)
            item=item[ind+len(tag):]
            end=item.index(endtag)
        except: pass
        else:
            print item[:end]

より複雑な操作のため、もちろんBSoupの方が好まれる。


4)

その他のbeautifulsoupをお勧めしますが、それを使用だが、あまりことをお勧めlxmlの 。その名前にもかかわらず、それはまたの解析とHTMLをスクレーピングしています。これは、はるかに、はるかに高速のbeautifulsoupよりだと言っても"壊れた"のHTMLのbeautifulsoup以上(名声への彼らの主張良い)を処理します。それはbeautifulsoupに関するすぎる場合は、lxmlのAPIを学ぶためにしない場合は互換性のAPIがある。

イアンBlickingが同意

あなたはGoogle App Engine、または何かがない純粋なPythonが許可されないものにしている場合を除き理由はない、もうのbeautifulsoupを使用して、だ。

この種のことは簡単ですので、lxml.htmlもCSS3のセレクタをサポートします。