切到要创建项目的位置,cd 进入scrapyexample
第二步:在cmd控制台:输入scrapy genspider myscrapy www.qq.com(想要爬取的url,进入myscrapy中是可以换的)
第三步:将anoconda中安装的scrapy加载到pycharm中
路径:File -> Settings -> Project: bigdata46 -> Project Interpreter
点击右上角的设置,add,点击选项:Exiting environment,选择anoconda 下python安装的位置
,一般就在安装目录anoconda/python.py。
我的是D:\Anaconda3\python
第四步: 配置scrapy的debug:在run 或者 ,右边启动处edit configuration
1.配置Script path: D:\Anaconda3\Lib\site-packages\scrapy\cmdline.py
2.配置Parameters: crawl myscrapy(爬虫name的名字,很重要,在myscray.py文件中,name值是可以改的)
3.配置WorkingDirectory: D:\bigdata\scrapyexample
第五步:在pycharm中打开D:\bigdata\scrapyexample ,可以看到目录结构
myscrapy.py:就是我编辑爬虫的主要文件
job.txt:是运行后生成的文件
items.py: 是要保存的栏目文件
pipelines.py: 是文件输出方式的文件
settings.py:我这里主要是在setting.py里设置'scrapyexample.piplines.ScrapyexamplePipeline':300
从而可以输出
第六步:编辑myscrapy.py,获取爬取的内容,这里就直接贴了:
# -*- coding: utf-8 -*- import scrapy from scrapyexample.items import ScrapyexampleItem class MyscrapySpider(scrapy.Spider): name = 'myscrapy' start_urls = [ 'https://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E6%9D%AD%E5%B7%9E&kw=java%E9%AB%98%E7%BA%A7&p=1&isadv=0'] page_count = 0 def parse(self, response): print("我的爬虫终于配好了当前页面是:" + str(self.page_count + 1)) items = response.xpath('//div[@id="newlist_list_content_table"]/table') for item in items: url = item.xpath('.//td[@class="zwmc"]/div/a/@href').extract_first() if url is not None: print("url======" + url) yield scrapy.Request(url, self.detail_parse) self.page_count += 1 if self.page_count < 10: next_page_url = response.xpath( '/html/body/div[3]/div[3]/div[3]/form/div[1]/div[1]/div[3]/ul/li[11]/a/@href') yield scrapy.Request(next_page_url.extract_first(), self.parse) def detail_parse(self, response): print("detail_parse:") title_xpath = '/html/body/div[5]/div[1]/div[1]/h1/text()' title = response.xpath(title_xpath).extract_first() require = "" content = "" require_path = '/html/body/div[6]/div[1]/ul' content_path = '//div[@class="tab-inner-cont"]' require_list = response.xpath(require_path)[0].xpath(".//text()") content_list = response.xpath(content_path)[0].xpath(".//text()") for item in require_list: require += item.extract().strip() for item in content_list: content += item.extract().strip() print(title) print(require) print(content) item = ScrapyexampleItem() item['title'] = title item['require'] = require item['content'] = content # 输出到控制台 # print(item['title'], item['require'], item['content']) yield item
第七步:编辑items.py
# -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # https://doc.scrapy.org/en/latest/topics/items.html import scrapy class ScrapyexampleItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() title = scrapy.Field() # 标题 require = scrapy.Field() # 要求 content = scrapy.Field() # 内容
第八步:编辑pipelines.py
# -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html import codecs import os import pymysql from pandas import json class ScrapyexamplePipeline(object): # 需要在setting.py里设置'scrapyexample.piplines.ScrapyexamplePipeline':300 def process_item(self, item, spider): # 获取当前工作目录 base_dir = os.getcwd() print("当前工作目录是:" + base_dir) fiename = base_dir + '/job.txt' #这里定义输出的文件名 # 从内存以追加的方式打开文件,并写入对应的数据 with open(fiename, 'a', encoding='utf-8') as f: # 这里必须写好编码utf-8,不然乱码,费了很久才搞定 f.write(item['title'] + '\n') f.write(item['require'] + '\n') f.write(item['content'] + '\n\n\n') return item
第九步:设置settings.py
ITEM_PIPELINES = { 'scrapyexample.pipelines.ScrapyexamplePipeline': 300 # 'scrapyexample.pipelines.JsonPipeline': 200 # 'scrapyexample.pipelines.mysqlPipeline': 100 }
大功造成,运行scrapy crawl myscrapy
job.txt中的部分值:
高级JAVA开发(杭州萧山区) 职位月薪:15001-20000元/月工作地点:杭州发布日期:2018-06-14 10:42:39工作性质:全职工作经验:5-10年最低学历:大专招聘人数:3人职位类别:Java开发工程师 岗位职责:1、通信、电子工程、自动化、计算机及其相关专业本科及以上学历;2、具有5年以上相关软件的系统设计开发经验,参加过大中型系统开发工作3、精通J2EE技术平台,熟悉常见的JAVA开发框架(Spring、struts、Mybatis)并对其架构体系有较深刻的理解,掌握HTML、Javascript、XML、CSS、Ajax等; 4、熟悉Tomcat、WebLogic、WebSphere等应用中间件5、至少熟练掌握Maven、Gradle等构建工具中的一种6、有一定分布式、多线程及高性能的设计与编码及性能调优能力;7、掌握SQL,熟悉Oracle、Db2、Mysql等数据库中的一种或多种;8、良好的表达沟通能力,独立工作能力强,学习能力强、有ERP或者集团OA等软件开发的优先 9、能适应一定的加班。任职要求:1、负责开发项目的系统分析、需求分析、功能分析;2、负责软件项目的组织研发与实施、修改已有的系统方案;3、负责保证开发软件的质量和符合客户需求,提供个体测试和技术指导4、负责协同管理信息化项目核心技术问题的攻关和系统优化,协助解决项目开发过程中的技术难题;5、协助、指导工程师解决关键问题,对技术人员进行技术指导;交通参考:地铁2号线钱江世纪城B出口 步行500米左右工作地址:浙江杭州萧山区钱江世纪城民和路945号 JAVA高级工程师-杭州(投资事业部研一) 职位月薪:15000-25000元/月工作地点:杭州发布日期:2018-04-11 10:52:50工作性质:全职工作经验:3-5年最低学历:本科招聘人数:1人职位类别:高级软件工程师 岗位职责:参与投资交易系统的开发和设计工作,能够根据设计文档独立完成编码、测试工作,负责并参与方案讨论、技术调研及参与解决开发中的技术难题。任职要求:1、本科以上学历三年以上Java开发工作经验;2、精通J2EE技术平台,熟悉常见的JAVA开发框架(Spring、struts、Mybatis)并对其架构体系有较深刻的理解;3、精通Web程序开发,熟练掌握熟悉HTML、Javascript、Jquery、XML、CSS、Ajax,能编写前端控件,搭建前端框架;4、熟练使用Tomcat,熟悉WebLogic、WebSphere等应用中间件;5、熟练掌握Oracle、MySQL俩种以上数据库的编程,能对数据库性能进行一定优化;6、具备有良好的沟通能力和问题挖掘、分析解决能力;7、具有良好的责任心、学习能力、团队合作能力,能适应高强度的工作。工作地址:杭州市滨江区江南大道3588号恒生大厦 高级java工程师(在杭州萧山区工作) 职位月薪:10001-15000元/月工作地点:杭州发布日期:2018-06-14 10:42:39工作性质:全职工作经验:3-5年最低学历:本科招聘人数:3人职位类别:Java开发工程师 岗位职责:1、按照需求构建业务模型、流程、架构及数据库设计;2、按照需求完成业务功能开发及单元测试;3、编写相关技术文档;4、参与code Review及带领团队助理开发工程师的技术指导工作。任职要求:1、本科或以上学历,4年及以上JAVA开发经验;2、精通Java语言及J2EE体系结构,有大型项目开发经验者优先;3、熟悉MVC架构模式,精通Spring,SpringMVC,MyBatis等框架;4、熟悉Oracle、MySQL等主流数据库,熟练掌握SQL操作和调优;5、熟悉分布式系统的设计和应用,熟练使用MQ,REDIS,DUBBO等中间件及服务框架;6、具备较强的沟通和学习能力,有团队合作和敬业精神。工作地址:浙江杭州萧山区钱江世纪城民和路945号欢迎大家指正批评,我实现了josn,txt格式的输出,mysql数据部分有问题,有兴趣的朋友 可以访问:https://www.cnblogs.com/freeman818/p/7228976.html