Scrapy 使用刮痧来减少盗版

Scrapy 使用刮痧来减少盗版,scrapy,web-crawler,Scrapy,Web Crawler,我刚开始使用Scrapy,对Python语言知之甚少。到目前为止,我已经安装了Scrapy并完成了一些教程。在那之后,我一直在努力寻找一种方法,在许多网站上搜索相同的数据。我的目标是使用Scarpy查找指向“posts”的链接以及一些搜索条件的链接。例如,我想搜索站点A、B和C。每个站点,我想看看他们是否有关于应用程序名称X、Y和Z的“帖子”。如果他们在X、Y、Z上有任何“帖子”。我想让它抓住该帖子的链接。如果能更容易些。。。它可以扫描我们公司名称的每个帖子。它将在每个“帖子”的内容中搜索[例如

我刚开始使用Scrapy,对Python语言知之甚少。到目前为止,我已经安装了Scrapy并完成了一些教程。在那之后,我一直在努力寻找一种方法,在许多网站上搜索相同的数据。我的目标是使用Scarpy查找指向“posts”的链接以及一些搜索条件的链接。例如,我想搜索站点A、B和C。每个站点,我想看看他们是否有关于应用程序名称X、Y和Z的“帖子”。如果他们在X、Y、Z上有任何“帖子”。我想让它抓住该帖子的链接。如果能更容易些。。。它可以扫描我们公司名称的每个帖子。它将在每个“帖子”的内容中搜索[例如公司名称],而不是X、Y、Z。我这样做的原因是,创建的JSON只包含指向“posts”的链接,以便我们可以查看它们,并在需要时联系网站

我使用的是Ubuntu10.12,我已经能够废弃我们想要的站点,但是我还不能将JSON缩小到所需的信息。因此,目前我们仍然需要通过数百个链接,这是我们希望通过这样做来避免的。我们得到这么多链接的原因是因为我找到的所有教程都是用于标记特定HTML标记的。我想让它搜索标签,看看它是否包含我们的应用程序标题或包名的任何部分

像这样,它显示帖子信息,但现在我们必须从json中选择链接。节省时间,但仍然不是我们真正想要的。部分原因是,我认为我没有正确地引用或调用它。请尽你所能帮助我。我花了好几个小时试图弄明白这一点

posts = hxs.select("//div[@class='post']")
        items = []
        for post in posts:
            item = ScrapySampleItem()
            item["title"] = post.select("div[@class='bodytext']/h2/a/text()").extract()
            item["link"] = post.select("div[@class='bodytext']/h2/a/@href").extract()
            item["content"] = post.select("div[@class='bodytext']/p/text()").extract()
            items.append(item)
        for item in items:
            yield item
我想用它来减少Android应用程序的盗版。如果我能让它出去搜索我们想要的盗版网站,我可以给网站或托管公司发电子邮件,把我们想要删除的所有链接都删除。根据版权法,他们必须遵守,但他们要求我们将他们链接到他们侵犯的每一个“帖子”,这就是为什么应用程序开发人员通常不会处理此类事情的原因。他们有数百个应用程序,因此查找应用程序的链接需要花费很多时间

感谢您提前提供的任何帮助。从长远来看,你将帮助许多应用程序开发人员


Grady

您的XPath选择器是绝对的。它们必须与上一个选择器(代码)相对


我已经删除了项目['content'],因为我不想要内容部分。我如何告诉它搜索X、Y和Z呢?现在,它正在抓取body/h2/a中的所有链接。谢谢你让我更进一步,并修复了我的代码!
posts = hxs.select('//div[@class='post']')

for post in posts:
    item = ScrapySampleItem()
    item['title'] = post.select('.//div[@class="bodytext"]/h2/a/text()').extract()
    item['link'] = post.select('.//div[@class="bodytext"]/h2/a/@href').extract()
    item['content'] = post.select('.//div[@class="bodytext"]/p/text()').extract()

    yield item