0开始学py爬虫(学习笔记)(Scrapy框架)(爬取职友集招聘信息)
生活随笔
收集整理的這篇文章主要介紹了
0开始学py爬虫(学习笔记)(Scrapy框架)(爬取职友集招聘信息)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
爬取招聘信息并保存到xlsx
爬蟲實現
定義數據(第一步)先知道自己要什么數據再去爬取
import scrapyclass JobuiItem(scrapy.Item):company=scrapy.Field()#定義公司名稱的數據屬性position = scrapy.Field()#定義職位名稱的數據屬性address = scrapy.Field()#定義工作地點的數據屬性detail = scrapy.Field()#定義招聘要求的數據屬性編輯爬蟲(第二步)
新加爬蟲文件
代碼該位置需要根據實際網頁情況獲取數據
yield 的意思相當于return 返回的意思,每次有新的item對象生成,也就是每次循環,新的數據請求回來都會返回一個新的item到引擎,也是每一行的數據的意思,callback函數是說,執行完了這個請求再執行的函數,思想可以參考前端的ajax請求,都是等待請求完成之后做的動作
配置文件的設置setting.py
FEED_URI='./storage/data/%(name)s.csv' FEED_FORMAT='CSV' FEED_EXPORT_ENCODING='ansi'FEED_URI是導出文件的路徑。’./storage/data/%(name)s.csv’,就是把存儲的文件放到與settings.py文件同級的storage文件夾的data子文件夾里。
FEED_FORMAT 是導出數據格式,寫CSV就能得到CSV格式。
FEED_EXPORT_ENCODING 是導出文件編碼,ansi是一種在windows上的編碼格式,你也可以把它變成utf-8用在mac電腦上。
上面配置沒有設置過,所以保存數據的xlsx表,保存在setting的同級文件
#取消`ITEM_PIPELINES`的注釋后:# Configure item pipelines # See https://doc.scrapy.org/en/latest/topics/item-pipeline.html ITEM_PIPELINES = {'jobuitest.pipelines.JobuitestPipeline': 300, }文件存儲編寫
import openpyxlclass JobuiPipeline(object): #定義一個JobuiPipeline類,負責處理itemdef __init__(self):#初始化函數 當類實例化時這個方法會自啟動self.wb=openpyxl.Workbook()#創建工作薄self.ws=self.wb.active#定位活動表self.ws.append(['公司','職位','地址','招聘信息'])#用append函數往表格添加表頭def process_item(self,item,spider):#process_item是默認的處理item的方法,就像parse是默認處理response的方法line=[item['company'],item['position'],item['address'],item['detail']]#把公司名稱、職位名稱、工作地點和招聘要求都寫成列表的形式,賦值給lineself.ws.append(line)#用append函數把公司名稱、職位名稱、工作地點和招聘要求的數據都添加進表格return itemdef close_spider(self,spider):#close_spider是當爬蟲結束運行時,這個方法就會執行self.wb.save('./jobui.xlsx')#保存文件self.wb.close()#關閉文件在最后,我們還要再修改Scrapy中settings.py文件里的默認設置:添加請求頭,以及把ROBOTSTXT_OBEY=True改成ROBOTSTXT_OBEY=False
我們需要取消DOWNLOAD_DELAY = 0這行的注釋(刪掉#)。DOWNLOAD_DELAY翻譯成中文是下載延遲的意思,這行代碼可以控制爬蟲的速度。因為這個項目的爬取速度不宜過快,我們要把下載延遲的時間改成0.5秒。(在settings.py中)
總結
以上是生活随笔為你收集整理的0开始学py爬虫(学习笔记)(Scrapy框架)(爬取职友集招聘信息)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis中Mapper标签总结大全
- 下一篇: Win7 32 不能安装STM32 虚拟