使用Scrapy减少盗版

时间:2013-03-17 04:38:36

标签: scrapy web-crawler

我是使用Scrapy的新手,我对Python语言知之甚少。到目前为止,我已经安装了Scrapy并经历了一些教程。之后,我一直试图找到一种方法来搜索许多网站的相同数据。我的目标是使用Scarpy查找“帖子”链接和一些搜索条件的链接。作为一个例子,我想搜索网站A,B和C.每个网站,我想看看他们是否有关于应用名称X,Y和Z的“帖子”。如果他们有任何“帖子” X,Y,Z。我想抓住那个帖子的链接。如果它更容易......它可以扫描每个帖子中的公司名称。它将代替X,Y,Z搜索[示例公司名称]的每个“帖子”的内容。我这样做的原因是创建的JSON只包含“帖子”的链接,以便我们可以查看它们并在需要时联系网站。

我在Ubuntu 10.12上,我已经能够废弃我们想要的网站,但是我无法将JSON缩小到所需的信息。所以目前我们仍然需要经历数百个链接,这是我们想要通过这样做避免的。我们获得这么多链接的原因是因为我找到的所有教程都是为了限制特定的HTML标记。我希望它能够搜索标签,看它是否包含我们的App标题或包名称的任何部分。

像这样,它会显示帖子信息,但现在我们必须从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应用的盗版率。如果我可以通过搜索我们想要的盗版网站,我可以通过电子邮件向网站或托管公司发送我们想删除的所有链接。根据版权法,他们必须遵守,但他们要求我们将它们链接到他们侵犯的每个“帖子”,这就是App Developers通常不会混淆这种事情的原因。他们有数百个应用程序,因此查找应用程序的链接需要花费数小时的时间。

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

格雷迪

1 个答案:

答案 0 :(得分:0)

您的XPath选择器是绝对的。它们必须相对于前一个选择器(.

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