0

私はこのコードを持っています:

import urllib
import urlparse
from bs4 import BeautifulSoup

url = "http://www.downloadcrew.com/?act=search&cat=51"
pageHtml = urllib.urlopen(url)
soup = BeautifulSoup(pageHtml)

for a in soup.select("div.productListingTitle a[href]"):
    try:
        print (a["href"]).encode("utf-8","replace")
    except:
        print "no link"

        pass

しかし、実行すると、20 個のリンクしか取得できません。出力は 20 を超えるリンクである必要があります。

4

1 に答える 1

1

コンテンツの最初のページのみをダウンロードするためです。

ループを使用してすべてのページをダウンロードするだけです:

import urllib
import urlparse
from bs4 import BeautifulSoup

for i in xrange(3):
    url = "http://www.downloadcrew.com/?act=search&page=%d&cat=51" % i
    pageHtml = urllib.urlopen(url)
    soup = BeautifulSoup(pageHtml)

    for a in soup.select("div.productListingTitle a[href]"):
        try:
            print (a["href"]).encode("utf-8","replace")
        except:
            print "no link"

ページ数がわからない場合は、

import urllib
import urlparse
from bs4 import BeautifulSoup

i = 0
while 1:
    url = "http://www.downloadcrew.com/?act=search&page=%d&cat=51" % i
    pageHtml = urllib.urlopen(url)
    soup = BeautifulSoup(pageHtml)

    has_more = 0
    for a in soup.select("div.productListingTitle a[href]"):
        has_more = 1
        try:
            print (a["href"]).encode("utf-8","replace")
        except:
            print "no link"
    if has_more:
        i += 1
    else:
        break

コンピューターで実行すると、3 ページの 60 リンクが表示されます。
がんばれ〜

于 2013-09-11T05:23:22.287 に答える