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