【问题标题】:Why can't I scrape Amazon by BeautifulSoup?为什么我不能通过 BeautifulSoup 抓取亚马逊?
【发布时间】:2014-05-09 01:32:54
【问题描述】:

这是我的python代码:

import urllib2
from bs4 import BeautifulSoup

page = urllib2.urlopen("http://www.amazon.com/")
soup = BeautifulSoup(page)
print soup

它适用于 google.com 和许多其他网站,但不适用于 amazon.com。

我可以在浏览器中打开 amazon.com,但生成的“汤”仍然没有。

此外,我发现它也无法从 appannie.com 抓取。但是,代码不会给出任何内容,而是返回错误:

HTTPError: HTTP Error 503: Service Temporarily Unavailable 

所以我怀疑亚马逊和 App Annie 是否会阻止抓取。

【问题讨论】:

  • 同样的代码适用于我,我只是在 amazon.com 周围添加了引号
  • 我不知道为什么google.com 对我有用,但amazon.com 却不行。
  • 它甚至会在您的浏览器中打开吗?
  • 我可以在浏览器中打开它,所以我怀疑亚马逊是否会阻止抓取。

标签: python beautifulsoup amazon


【解决方案1】:

添加一个标题,然后它就可以工作了。

from bs4 import BeautifulSoup
import requests
url = "http://www.amazon.com/"

# add header
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'}
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, "lxml")
print soup

【讨论】:

  • 像魅力伙伴一样工作。非常感谢!
【解决方案2】:

你可以试试这个:

import urllib2
from bs4 import BeautifulSoup

page = urllib2.urlopen("http://www.amazon.com/")
soup = BeautifulSoup(page)
print soup

在python中,任意文本被称为字符串,它必须用引号(“”)括起来。

【讨论】:

    【解决方案3】:

    我刚遇到这个,发现设置任何用户代理都可以。您无需对您的用户代理撒谎。

    response = HTTParty.get @url, headers: {'User-Agent' => 'Httparty'}
    

    【讨论】:

      【解决方案4】:

      添加标题

      import urllib2
      from bs4 import BeautifulSoup
      
      headers = {'User-agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36'}
      
      page = urllib2.urlopen("http://www.amazon.com/")
      soup = BeautifulSoup(page)
      print soup
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 2019-12-07
        • 1970-01-01
        • 2022-11-01
        • 2017-07-28
        • 2019-08-11
        相关资源
        最近更新 更多