【问题标题】:IMDB Scraper Using Python and ScrapyIMDB Scraper 使用 Python 和 Scrapy
【发布时间】:2015-01-16 18:43:37
【问题描述】:

好的,我是编程新手,我认为最好的学习方法是编程。我的部分工作包括在 IMDB 上搜索电影,然后在 Excel 电子表格中粘贴导演、编剧、(前四名)演员以及 IMDB 页面的链接。

我的最终目标是创建一个包含电影标题和年份的 CSV,并让抓取工具从 CSV 中获取这些变量,搜索 IMDB,提取数据,然后将数据导出到新的 CSV 中。


我已经阅读和研究了大约一个星期。我已经成功完成了 Scrapy 教程,但是我无法从那里到达预期的终点。

  • 如何将 CSV 中的值导入蜘蛛脚本?我想它看起来像这样:

    name = COLUMN1
    year = COLUMN2
    
    class imdb_spider(scrapy.Spider):
      name = "imdb"
      allowed_domains = ["imdb.com"]
      start_urls = [
        "http://www.imdb.com/find?ref_=nv_sr_fn&q=/(name)&(year)"
        ]
    

我不确定如何从 CSV 文件中提取数据。


  • 从那里,我需要蜘蛛跟随页面上的第一个链接(这将是电影名称),然后是后续页面上的“查看完整的演员和工作人员”链接。

我需要的所有信息都在最后一页:http://www.imdb.com/title/tt0081505/fullcredits?ref_=tt_ov_st_sm


  • 定义要提取的内容让我非常困惑。

这是我用萤火虫拉的:

导演:

<td class="name">
<a href="/name/nm0000040/?ref_=ttfc_fc_dr1"> Stanley Kubrick </a>
</td>

作者:

<td class="name">
<a href="/name/nm0000040/?ref_=ttfc_fc_wr2"> Stanley Kubrick </a>
</td>

演员(如果可能,只需要前四个):

<td class="itemprop" itemtype="http://schema.org/Person" itemscope="" itemprop="actor">
<td class="ellipsis"> ... </td>

我不确定如何定义页面链接本身。


之后,我只需要将它循环到整个列表并保存一个包含数据的新 CSV。

我知道这是一个激烈的问题,我不会要求任何人为我编写代码。如果我知道在哪里看/如何解决这个问题,我愿意投入工作。我正在阅读 Scrapy 文档,但仍不清楚。

如果有比 Python 和 Scrapy 明显更好的方法,请告诉我。

谢谢。

编辑:Mac OS x 10.10.1、Python 2.7、Scrapy 0.24.4、TextWrangler 进行编辑

【问题讨论】:

    标签: python scrapy web-crawler scraper


    【解决方案1】:

    csv 模块非常方便,对于具有不规则/空字段的制表符分隔文件也很有用。 (导入 csv)

        with open('something_something_darkside.txt', 'rb') as f:
            data = list(csv.reader(f,delimiter='\t'))
            for row in data:
    

    就网页而言,我找到了使用 Beautiful Soup 将 html 转换为 xml 的方法,并使用 xml 解析器来提取我需要的内容。这些方法可能已经过时,但仍然可靠。

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2020-08-19
      • 2015-02-08
      • 2021-07-29
      • 1970-01-01
      相关资源
      最近更新 更多