【问题标题】:Issue scraping with Beautiful Soup用 Beautiful Soup 刮问题
【发布时间】:2023-03-13 18:55:01
【问题描述】:

在使用相同的技术之前,我一直在抓取网站。但是这个网站好像不行。

import urllib2
from BeautifulSoup import BeautifulSoup
url = "http://www.weatheronline.co.uk/weather/maps/current?LANG=en&DATE=1354104000&CONT=euro&LAND=UK&KEY=UK&SORT=1&INT=06&TYP=sonne&ART=tabelle&RUBRIK=akt&R=310&CEL=C"
page=urllib2.urlopen(url).read()
soup = BeautifulSoup(page)
print soup

在输出中应该是网页的内容,但我只是得到这个:

GIF89a(它还有一些我不能在这里复制的符号)

关于问题是什么以及我应该如何处理的任何想法。

【问题讨论】:

    标签: python beautifulsoup urllib2


    【解决方案1】:

    但我想知道为什么我得到一个 gif 访问这样的 url 当我通过浏览器访问它时,我可以完美地访问该网站。

    因为这些人很聪明,不希望在网络浏览器之外访问他们的网站。您需要做的是通过将 User-agent 添加到标头来伪造已知浏览器。这是一个可以工作的修改示例

    >>> import urllib2
    >>> opener = urllib2.build_opener()
    >>> opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    >>> url = "http://www.weatheronline.co.uk/weather/maps/current?LANG=en&DATE=1354104000&CONT=euro&LAND=UK&KEY=UK&SORT=1&INT=06&TYP=sonne&ART=tabelle&RUBRIK=akt&R=310&CEL=C"
    >>> response = opener.open(url)
    >>> page = response.read()
    >>> from BeautifulSoup import BeautifulSoup
    >>> soup = BeautifulSoup(page)
    

    【讨论】:

    • @Abhijit 请注意,一旦他们发现您正在抓取该网站,他们可能会对其 HTML 进行更改,从而破坏您的抓取。或阻止您的 IP 地址。或任何其他变化。他们不希望您抓取他们的网站。也许你应该尊重这一点。
    • Traceback(最近一次调用最后):文件“”,第 1 行,在 文件“C:\Python27\lib\urllib2.py”,第 406 行,在开放响应中= meth(req, response) 文件“C:\Python27\lib\urllib2.py”,第 519 行,在 http_response 'http' 中,请求、响应、代码、msg、hdrs) 文件“C:\Python27\lib\urllib2 .py”,第 444 行,错误返回 self._call_chain(*args) 文件“C:\Python27\lib\urllib2.py”,第 527 行,在 http_error_default 中引发 HTTPError(req.get_full_url(), code, msg, hdrs , fp) HTTPError: HTTP 错误 403: 禁止
    【解决方案2】:

    这意味着您访问的 URL 是 GIF 图片,而不是网页。事实上,我运行了脚本并将“页面”保存到一个文件中,你会得到一个 1x1 像素的白色(或可能是透明的)GIF。

    您使用实际的网络浏览器无法获得该信息的原因实际上可能是因为他们不希望您抓取它。

    根据他们的使用条款: “您不得以任何方式复制、复制、再版、下载、发布、广播、传输或以其他方式使用本网站的内容,除非用于您个人的非商业用途。”

    您可以通过一些工作来伪造网络浏览器,但我仍然建议您改为与 WeatherOnline 交谈。他们希望您为他们的数据付费,但如果您这样做,您肯定会得到一个不错的 API,可以用来代替屏幕抓取。

    【讨论】:

    • 感谢您的回答。我知道,但我想知道为什么我得到一个 gif 访问这样的 url,当我通过浏览器访问它时,我完美地得到了网站。
    猜你喜欢
    • 2016-01-09
    • 2018-04-22
    • 2011-10-09
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2022-07-20
    • 2019-07-21
    • 2014-02-08
    相关资源
    最近更新 更多