日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

0开始学py爬虫(学习笔记)(Scrapy框架)(爬取职友集招聘信息)

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 0开始学py爬虫(学习笔记)(Scrapy框架)(爬取职友集招聘信息) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬取招聘信息并保存到xlsx

爬蟲實現
定義數據(第一步)先知道自己要什么數據再去爬取

import scrapyclass JobuiItem(scrapy.Item):company=scrapy.Field()#定義公司名稱的數據屬性position = scrapy.Field()#定義職位名稱的數據屬性address = scrapy.Field()#定義工作地點的數據屬性detail = scrapy.Field()#定義招聘要求的數據屬性
編輯爬蟲(第二步)


新加爬蟲文件

import scrapy import bs4 from ..items import JobuiItemclass JobuiSpider(scrapy.Spider):name='jobui'#名字要對應setting文件里的BOT_NAME字段,不然編譯報錯allowed_domins=["https://www.jobui.com"]#定義允許爬蟲爬取網址的域名——職友集網站的域名start_urls=['https://www.jobui.com/rank/company/']#定義起始網址——職友集企業排行榜的網址def parse(self,response):#parse是默認處理response的方法bs=bs4.BeautifulSoup(response.text,'html.parser')#用BeautifulSoup解析response(企業排行榜的網頁源代碼)ul_list=bs.find_all('ul',class_='textList flsty cfix')for ul in ul_list:a_list=ul.find_all('a')for a in a_list:company_id=a['href']url='https://www.jobui.com{id}jobs'real_url=url.format(id=company_id)yield scrapy.Request(real_url,callback=self.parse_job)def parse_job(self,response):bs=bs4.BeautifulSoup(response.text,'html.parser')company=bs.find(id="companyH1").textdatas=bs.find_all("div",class_='c-job-list')for data in datas:item=JobuiItem()item['company']=companyitem['position']=data.find('h3').textitem['address']=data.find(class_='job-desc').find('span').textitem['detail']=data.find_all('span')[1].textyield item

代碼該位置需要根據實際網頁情況獲取數據
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框架)(爬取职友集招聘信息)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。