使用 Python 和 Scrapy 的 IMDB 抓取工具

IMDB Scraper Using Python and Scrapy

好吧,我是编程新手,我认为最好的学习方法是编写一些东西。我的部分工作涉及在 IMDB 上搜索电影并将导演、编剧、(前四位)演员和 link 粘贴到 Excel 电子表格中的 IMDB 页面。

我的最终目标是获得一个包含电影名称和年份的 CSV,让爬虫从 CSV 中获取这些变量,搜索 IMDB,提取数据,然后将数据导出到一个新的 CSV 中。


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

虽然我不确定如何从 CSV 文件中提取。


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


这是我使用 firebug 提取的内容:

导演:

<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>

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


之后,我只需要遍历整个列表并用数据保存一个新的 CSV。

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

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

谢谢。

编辑:Mac OS x 10.10.1,Python 2.7,Scrapy 0.24.4,TextWrangler 编辑

csv 模块非常方便,对于包含 irregular/empty 字段的制表符分隔文件也很有用。 (导入 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 解析器来提取我需要的内容。这些方法可能已经过时但仍然可靠。