【问题标题】:Crawling Amazon爬行亚马逊
【发布时间】:2017-05-03 10:34:19
【问题描述】:

我正在尝试制作一个 Python 网络爬虫,但由于某种原因,当我尝试爬取亚马逊之类的网站时,我的程序打印出来的唯一内容是“无”

import requests
from bs4 import BeautifulSoup

def spider(max_pages):
    page = 1
    while page <= max_pages:
        url = 'https://www.amazon.com/s/ref=sr_pg_2?rh=i%3Aaps%2Ck%3Apython&page=' + str(page) + '&keywords=python&ie=UTF8&qid=1482022018&spIA=B01M63XMN1,B00WFP9S2E'
        source = requests.get(url)
        plain_text = source.text
        obj = BeautifulSoup(plain_text, "html5lib")

        for link in obj.find_all('a'):
            href = link.get(url)
            print(href)
        page += 1

spider(1)

【问题讨论】:

  • 您是否尝试过另一个更简单的页面?一些网站不允许网络爬虫
  • 我可以尝试什么页面?
  • 试试thenewboston.com。如果您有兴趣,该网站的创建者也有一个非常深入的 python 爬虫教程。 Here's YouTube 播放列表

标签: python request beautifulsoup


【解决方案1】:

您需要考虑请求中的标头和参数。 您可以执行以下步骤来简化任务:

  1. 右键单击要抓取的站点并选择“检查”。 (谷歌浏览器默认)
  2. 转到“网络”菜单并右键单击要抓取的请求。
  3. 选择“复制为 cURL”。
  4. 转到“https://curl.trillworks.com/”等转换器站点之一,获取所需的 Python 代码(或其他语言)

【讨论】:

    【解决方案2】:

    没有用户代理:

    requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: https://www.amazon.com/s/ref=sr_pg_2?rh=i%3Aaps%2Ck%3Apython&page=1%20%27&keywords=python&ie=UTF8&qid=1482022018&spIA=B01M63XMN1,B00WFP9S2E%27
    

    使用用户代理:

    headers = {'User-Agent':'Mozilla/5.0'}
    r = requests.get('https://www.amazon.com/s/ref=sr_pg_2?rh=i%3Aaps%2Ck%3Apython&page=1%20%27&keywords=python&ie=UTF8&qid=1482022018&spIA=B01M63XMN1,B00WFP9S2E%27', headers=headers)
    

    效果很好。

    How to prevent getting blacklisted while scraping你可以阅读这个页面来了解为什么你应该使用UA。

    【讨论】:

    • 我认为你应该给出解释,而不是仅仅告诉 OP 该怎么做。
    • ^我同意。
    猜你喜欢
    • 2022-12-15
    • 2012-06-20
    • 2016-11-26
    • 2012-12-08
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    相关资源
    最近更新 更多