使用scrapy抓取各种网站并查找特定单词

时间:2012-11-08 05:48:41

标签: python web-crawler scrapy

我是scrapy框架的新手。他们有这篇很棒的文档,我在那里学到了各种各样的东西。我正在尝试将各种教育网站卷入深度级别3,在每个网站中找到cse部门(尝试在该页面上抓取的链接中找到cse或计算机或单词列表)。如果他们的网站中有cse部门,那么这些链接或URL将存储在.csv文件中。到目前为止,这是我的代码:

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

from dirbot.items import Website


class DmozSpider(BaseSpider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/",
    ]

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select('//ul/li')
        items = []

        for site in sites:
            item = Website()
            item['name'] = site.select('a/text()').extract()
            item['url'] = site.select('a/@href').extract()
            item['description'] = site.select('text()').extract()
            items.append(item)

        return items

问题是:在allowed_domains中,我想抓取存储在.csv文件中的1000多个网站。我想导入csv文件并遍历每个URL。我怎样才能做到这一点?如果他们有cs部门,那些链接应该写在csv文件中。如何修改我的XPath以找到每个网站中的cse部门(尝试在该页面上的链接中找到cse或计算机或单词列表)以及我在哪里应用条件(如果链接有cse部门将该链接写入文件否则没有。)最后我如何指定scrapy的深度?谢谢还可以在文件中定义单词搜索技术并在scrapy中使用它吗?

1 个答案:

答案 0 :(得分:0)

'start_urls'只是一个列表。覆盖init,读取csv,然后汇总列表。