【问题标题】:Web scrape using Beautifulsoup , brings different content使用 Beautifulsoup 进行网页抓取,带来不同的内容
【发布时间】:2014-03-16 18:15:08
【问题描述】:

如果您访问http://www.imdb.com/title/tt2375692/episodes?season=1 在这里,你会看到第 1 季第 1 集的发布日期是 2014 年 1 月 25 日,

这是我用来抓取的代码。

    req = urllib2.Request('http://www.imdb.com/title/tt2375692/episodes?season=1')
    self.diziPage = urllib2.urlopen(req).read()
    self.diziSoup = BeautifulSoup(self.diziPage,from_encoding="utf8")

在我抓取网站后,一切都很好,除了播出日期, 第 1 集的播出日期是 2014 年 4 月 20 日,我去的时候还没有,其余的信息都是正确的。

我认为这可能是因为我做了一些实验但没有奏效。

【问题讨论】:

  • 当我在浏览器中访问该页面时为我显示20 April 2014...

标签: python html beautifulsoup html-parsing


【解决方案1】:

当我使用BeautifulSoup 抓取日期时,我得到25 Jan. 2014。首先找到第一集I.的链接,然后通过获取链接父级的父级获取该集块,然后在里面按类查找日期:

import urllib2
from bs4 import BeautifulSoup


url = "http://www.imdb.com/title/tt2375692/episodes?season=1"

soup = BeautifulSoup(urllib2.urlopen(url))

episode1 = soup.find('a', {'title': 'I.'}).parent.parent
print episode1.find('div', {'class': 'airdate'}).text.strip()

打印:

25 Jan. 2014

【讨论】:

  • 这很奇怪,当我运行您的脚本时,一切都按预期进行。当我在我的服务器上运行它时,我得到了 2014 年 4 月 20 日。你认为 imdb 是否根据访问者的 ip 提供内容?第二件事也是最奇怪的事情,除了第一集,我得到了正确的播出日期。谢谢
  • @durdenk 好吧,有几件事可能会产生影响。首先,20 Apr. 2014 的来源是个谜——页面的源代码中没有这个日期。似乎使用了不同的 url 进行解析。
  • 我刚刚复制并粘贴了您的代码,在本地运行它并在我的服务器中得到不同的输出,这可能是因为 http 标头或访问者 ip。似乎需要另一个网站来解析播出日期之类的。
  • 顺便说一句,4 月 20 日来自第 1 集的发布日期,德国 2014 年 4 月 20 日我的服务器位于德国,尽管我添加了相关的内容标题,但我只为第 1 集获得了不同的内容,这很奇怪.
【解决方案2】:

看起来,imdb 会根据访问者的位置提供不同的播出日期。 这就是为什么我得到不同数据的原因,我认为他们会检查访问者的 ip 或其他东西。

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 2020-10-04
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多