Craigslist纸条

2024-04-20 13:11:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个垃圾脚本,在任何craigslist子域中获取计算机演唱会的所有结果: 例如:http://losangeles.craigslist.org/search/cpg/ 这个查询返回许多文章的列表,我尝试使用CrawlSpider和linkExtractor获取每个结果的标题和href(不仅是第一页上的结果),但是脚本没有返回任何结果。 我把我的剧本贴在这里,谢谢

    import scrapy
    from scrapy.spiders import Rule,CrawlSpider
    from scrapy.linkextractors import LinkExtractor

    class CraigspiderSpider(CrawlSpider):
        name = "CraigSpider"
        allowed_domains = ["http://losangeles.craigslist.org"]
        start_urls = (
                    'http://losangeles.craigslist.org/search/cpg/',
        )

        rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//a[@class="button next"]',)), callback="parse_page", follow= True),)

        def parse_page(self, response):
            items = response.selector.xpath("//p[@class='row']")
        for i in items:
            link = i.xpath("./span[@class='txt']/span[@class='pl']/a/@href").extract()
            title = i.xpath("./span[@class='txt']/span[@class='pl']/a/span[@id='titletextonly']/text()").extract()
            print link,title

Tags: fromorgimport脚本httpsearchxpathclass
1条回答
网友
1楼 · 发布于 2024-04-20 13:11:34

根据您粘贴的代码,parse_page

  1. 不会返回/产生任何结果,以及
  2. 只包含一行:“items=响应选择器“…”

上面#2的原因是for循环没有正确缩进。在

尝试缩进for循环:

class CraigspiderSpider(CrawlSpider):
    name = "CraigSpider"
    allowed_domains = ["http://losangeles.craigslist.org"]
    start_urls = ('http://losangeles.craigslist.org/search/cpg/',)

    rules = (Rule(
        LinkExtractor(allow=(), restrict_xpaths=('//a[@class="button next"]',)),
        callback="parse_page", follow= True))

    def parse_page(self, response):
        items = response.selector.xpath("//p[@class='row']")

        for i in items:
            link = i.xpath("./span[@class='txt']/span[@class='pl']/a/@href").extract()
            title = i.xpath("./span[@class='txt']/span[@class='pl']/a/span[@id='titletextonly']/text()").extract()
            print link, title
            yield dict(link=link, title=title)

相关问题 更多 >