Web scraping 如何从网站上抓取这些数据?

Web scraping 如何从网站上抓取这些数据?,web-scraping,beautifulsoup,scrapy,Web Scraping,Beautifulsoup,Scrapy,下面是一个例子:[ 理想情况下,您希望看到一个整洁地抓取和提取的输出数据数组,其中包含以下字段: 公司名称 2016年排名 2015年排名 经商多年 业务描述 网站 2015年收入 2014年收入 总部城市 成立年份 员工 是家族所有的吗? 从每个特定的公司数据页。我是一个纯粹的初学者,我想知道如何提取链接自动。在这段代码中,我喂养它的手册。有人可以帮助我这里 import scrapy from spy.items import SpyItem from scrapy.selector im

下面是一个例子:[

理想情况下,您希望看到一个整洁地抓取和提取的输出数据数组,其中包含以下字段:

公司名称 2016年排名 2015年排名 经商多年 业务描述 网站 2015年收入 2014年收入 总部城市 成立年份 员工 是家族所有的吗? 从每个特定的公司数据页。我是一个纯粹的初学者,我想知道如何提取链接自动。在这段代码中,我喂养它的手册。有人可以帮助我这里

import scrapy
from spy.items import SpyItem

from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.linkextractors import LinkExtractor

class ProjectSpider(CrawlSpider):
    name = "project"
    allowed_domains = ["cincinnati.com/story/money/2016/11/26/see-which-companies-16-deloitte-100/94441104/"]
    start_urls = [100Links in here]



def parse(self, response):
            item = SpyItem()
            item['title'] = response.xpath('//*[@id="overlay"]/div[2]/article/div[3]/p[1]/strong/text()').extract()
            item['Business'] =response.xpath('//*[@id="overlay"]/div[2]/article/div[3]/p[4]/text()').extract()
            item['website'] =response.xpath('//p[5]/a/text()').extract()
        item['Ranking']=response.xpath('//*[@id="overlay"]/div[2]/article/div[3]/p[2]/text()[1]').extract()
        item['HQ']=response.css('p:nth-child(12)::text').extract()
        item['Revenue2015']=response.xpath('//*[@id="overlay"]/div[2]/article/div[3]/p[7]/text()').extract()
        item['Revenue2014']=response.css('p:nth-child(10)::text').extract()
        item['YearFounded']=response.xpath('//p[11]/text()').extract().encode('utf-8')
        item['Employees']=response.xpath('//article/div[3]/p[12]/text()').extract()
        item['FamilyOwned']=response.xpath('//*[@id="overlay"]/div[2]/article/div[3]/p[13]/text()').extract()
        yield item

您的代码至少有两个问题

允许的\u域必须是域,不能超过。 你使用一个爬行器,这个爬行器应该和规则一起使用。你没有任何规则。 以下是一些经过测试的代码作为起点:

进口羊瘙痒 类ProjectItemPrapy。项: title=scrapy.Field owned=scrapy.Field 类ProjectSpiderscrapy.Spider: name=cin100 允许的_域=['cincinnati.com'] 起始URL=['http://www.cincinnati.com/story/money/2016/11/26/see-which-companies-16-deloitte-100/94441104/'] def Parself,响应: 获取所有100家公司的选择器 sel_companys=response.xpath'//p[contains.,这里是公司]/以下同级::p/a' 从href为每个公司详细信息页面创建请求 对于sel_公司中的sel_公司: href=sel_companie.xpath'/@href'。首先提取 url=response.urljoinhref request=scrapy.Requesturl,callback=self.parse\u company\u detail 让步请求 def parse_company_detailself,响应: 在详细信息页面上创建项目 项目=项目项 使用特定的XPath语句获取详细信息 e、 标题是第一段 item['title']=response.xpath'//div[@role=main]/p[1]//text.首先提取\u e、 g.家族拥有的标签我们可以选择 项['owned']=response.xpath'//div[@role=main]/p[contains.,Family owned]/text'。首先提取 为其他领域寻找聪明的XPath。。。 ... 最后:生成项目 收益项目
你试过什么?给我们看代码。item['Revenue2014']='$'+response.xpath'//div[@role=main]/p[contains.,2014]/text。先提取。拆分'$'[1]我得到AttributeError:'NoneType'对象没有属性'split'这里有人能帮我吗?