【问题标题】:How to crawl classified websites [closed]如何抓取分类网站[关闭]
【发布时间】:2015-05-02 16:48:48
【问题描述】:

我正在尝试使用 Scrapy 编写一个爬虫来爬取分类类型(目标)站点并从目标站点上的链接中获取信息。 Scrapy 上的教程仅帮助我从目标 URL 获取链接,而不是我寻求的第二层数据收集。有线索吗?

例如,目标站点是:

start_url = "http://newyork.craigslist.org/search/cta"

对于目标网站上的所有链接,我想转到每个列表并获取价格、卖家、位置、电话或电子邮件

【问题讨论】:

  • 到目前为止你做了什么?
  • 嗨詹姆斯。我们试图在这里鼓励新用户(好吧,真的是每个人)展示他们的研究。我希望如果你在这里搜索,GitHub 和网络通常你会找到某种 CraigsList 的爬虫。但是,请记住 CraigsList 该公司可能对抓取工具持暗淡的态度,因为运行抓取工具是一种尝试免费获取其他人花费大量时间和金钱组装的数据。至少你需要在两次抓取之间暂停一下,如果这是 CraigLists 的决定,你需要接受被 IP 屏蔽。

标签: web-crawler scrapy scrapy-spider


【解决方案1】:
import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import Selector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from urlparse import urljoin


class CompItem(scrapy.Item):
    name = scrapy.Field()
    price = scrapy.Field()
    location = scrapy.Field()




class criticspider(CrawlSpider):
    name = "craig"
    allowed_domains = ["newyork.craigslist.org"]
    start_urls = ["http://newyork.craigslist.org/search/cta"]


    def parse(self, response):
        sites = response.xpath('//div[@class="content"]')
        items = []

        for site in sites:
            item = CompItem()
            item['name'] = site.xpath('.//p[@class="row"]/span[@class="txt"]/span[@class="pl"]/a/text()').extract().
            item['price'] = site.xpath('.//p[@class="row"]/span[@class="txt"]/span[@class="l2"]/span[@class="price"]/text()').extract()
            item['location'] = site.xpath('.//p[@class="row"]/span[@class="txt"]/span[@class="l2"]/span[@class="pnr"]/small/text()').extract()
            items.append(item)
            return items

【讨论】:

  • 感谢约翰的帮助。成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多