0

そのため、ページに「Recipes adapted from」または「Recipe from」という用語が含まれている範囲内のすべての URL を取得しようとしています。これにより、約 7496 までのファイルへのすべてのリンクがコピーされ、HTTPError 404 が出力されます。何が間違っていますか? BeautifulSoup と requests を実装しようとしましたが、まだ機能しません。

import urllib2
with open('recipes.txt', 'w+') as f:
    for i in range(14477):
        url = "http://www.tastingtable.com/entry_detail/{}".format(i)
        page_content = urllib2.urlopen(url).read()
        if "Recipe adapted from" in page_content:
            print url
            f.write(url + '\n')
        elif "Recipe from" in page_content:
            print url
            f.write(url + '\n')
        else:
            pass
4

1 に答える 1

1

スクレイピングしようとしている URL の一部が存在しません。例外を無視して、おそらくスキップしてください。

import urllib2
with open('recipes.txt', 'w+') as f:
    for i in range(14477):
        url = "http://www.tastingtable.com/entry_detail/{}".format(i)
        try:
            page_content = urllib2.urlopen(url).read()
        except urllib2.HTTPError as error:
            if 400 < error.code < 500:
                continue  # not found, unauthorized, etc.
            raise   # other errors we want to know about
        if "Recipe adapted from" in page_content or "Recipe from" in page_content:
            print url
            f.write(url + '\n')
于 2013-08-06T13:28:42.007 に答える