python - Scrapy XPath 页面上的所有链接

标签 python xpath scrapy

我正在尝试使用 Scrapy 收集域下的所有 URL。我试图使用 CrawlSpider 从主页开始并抓取他们的网站。对于每个页面,我想使用 Xpath 提取所有 href。并以类似键值对的格式存储数据。

Key:当前Url 值:该页面上的所有链接。

class MySpider(CrawlSpider):
    name = 'abc.com'
    allowed_domains = ['abc.com']
    start_urls = ['http://www.abc.com']

    rules = (Rule(SgmlLinkExtractor()), )
    def parse_item(self, response):
        hxs = HtmlXPathSelector(response)
        item = AbcItem()
        item['key'] = response.url 
        item['value'] = hxs.select('//a/@href').extract()
        return item 

我定义我的 AbcItem() 如下所示:

从 scrapy.item 导入项目,字段

class AbcItem(Item):

    # key: url
    # value: list of links existing in the key url
    key = Field()
    value = Field()
    pass

当我这样运行我的代码时:

nohup scrapy crawl abc.com -o output -t csv &

机器人似乎开始爬行,我可以看到所有配置日志都填充了 nohup.out 文件,但我的输出文件中没有任何信息。这正是我要收集的信息,任何人都可以帮助我有了这个?我的机器人可能出了什么问题?

最佳答案

您应该已经为规则定义了回调。下面是从 twitter.com 主页 (follow=False) 获取所有链接的示例:

from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.item import Item, Field


class MyItem(Item):
    url= Field()


class MySpider(CrawlSpider):
    name = 'twitter.com'
    allowed_domains = ['twitter.com']
    start_urls = ['http://www.twitter.com']

    rules = (Rule(SgmlLinkExtractor(), callback='parse_url', follow=False), )

    def parse_url(self, response):
        item = MyItem()
        item['url'] = response.url
        return item

然后,在输出文件中,我看到:

http://status.twitter.com/
https://twitter.com/
http://support.twitter.com/forums/26810/entries/78525
http://support.twitter.com/articles/14226-how-to-find-your-twitter-short-code-or-long-code
...

希望对您有所帮助。

关于python - Scrapy XPath 页面上的所有链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903197/

相关文章:

python - 高效的 Matplotlib 重绘

python - PyGame 边界碰撞检测不起作用

python - 查找最高键

iphone - xpath查询问题

xml - 查找嵌入的命名空间 uri

python 在 mac os 10.10.1 上安装 lxml

python - Scrapy shell 中的奇怪 XPath 结果

python - 根据字符串的一部分在多个其他列中的存在情况创建列

xml - xml :lang? 的 XPath 测试属性自轴失败

python - Scrapy:存储所有外部链接并抓取所有内部链接