scrapy框架爬取資料入庫(附詳細介紹)

2021-08-17 05:36:08 字數 3812 閱讀 1920

1.建立scrapy專案(安裝scrapy框架和mysql資料庫就不在這討論了,論壇上也有很多),在這裡我建立的專案名稱是「testmysql」,命令(cmd)是「scrapy startproject testmysql」,最好是在你想要建立專案的目錄裡面建立,建立好後,會看到如下檔案

2.建立spider檔案,cd命令到testmysql資料夾(上圖的第乙個testmysql資料夾)下,輸入命令(scrapy genspider yingyeyuancs.58.com/yingyeyuan/)(這裡你也可以手動增加該檔案),然後就會看到有乙個yinyeyuan.py的檔案生成,好了,之後就在這裡面寫爬蟲**吧!

3.開始編寫spider,我爬的是58同城上的營業員相關的職業,所以第二步要在**裡面寫 「cs.58.com/yingyeyuan/」,然後將頁面的標題,工資,福利,公司名稱,**如下:

# -*- coding: utf-8 -*-

import scrapy

class yinyeyuanspider(scrapy.spider):

name = 'yingyeyuan'

# allowed_domains = ['']

start_urls = ['']

def parse(self, response):

# 獲取標題

title = response.xpath(".//*[@id='list_con']/li/div[1]/div[1]/a/span[2]/text()").extract()

# 獲取公司名稱

comname = response.xpath(".//*[@id='list_con']/li/div[2]/div/a/text()").extract()

# 獲取工資

money = response.xpath(".//*[@id='list_con']/li/div[1]/p/text()").extract()

# 獲取福利

getfree = response.xpath(".//*[@id='list_con']/li/div[1]/div[2]/span[1]/text()").extract()

4.將得到的資料儲存到items中去,所以要講items.py匯入到此檔案中來(比上面多了幾行**而已),注意,最下面的yield語句一定要有,這個地方害我走了很多彎路,就這一句**,

# -*- coding: utf-8 -*-

import scrapy

from ..items import testmysqlitem

class yinyeyuanspider(scrapy.spider):

name = 'yingyeyuan'

# allowed_domains = ['']

start_urls = ['']

def parse(self, response):

# 獲取標題

title = response.xpath(".//*[@id='list_con']/li/div[1]/div[1]/a/span[2]/text()").extract()

# 獲取公司名稱

comname = response.xpath(".//*[@id='list_con']/li/div[2]/div/a/text()").extract()

# 獲取工資

money = response.xpath(".//*[@id='list_con']/li/div[1]/p/text()").extract()

# 獲取福利

getfree = response.xpath(".//*[@id='list_con']/li/div[1]/div[2]/span[1]/text()").extract()

# 例項化tongchengitem類

tongcheng = testmysqlitem()

# 存入items

tongcheng["title"] = title

tongcheng["comname"] = comname

tongcheng["money"] = money

tongcheng["getfree"] = getfree

yield tongcheng

5.到了這步,就可以開始編寫入庫**了,找到專案目錄下的pipelines.py檔案:

輸入如下**,我是存入mysql資料庫,具體根據你的資料庫來(解釋:__init__函式裡面初始化時就連線資料庫,這樣會方便很多,畢竟增刪改查都要用到這些**,同時輸出下,確保程式執行到這裡。process_items函式就是入庫的操作,items由於是所有的資料的集合,所以要迴圈執行,try 語句確保入庫成功,不成功就返回錯誤原因):

import pymysql

class testmysqlpipeline(object):

def __init__(self):

# connection database

self.connect = pymysql.connect('localhost','root','root','tongcheng',use_unicode=true,charset='utf8')

# get cursor

self.cursor = self.connect.cursor()

print("connecting mysql success!")

def process_item(self, item, spider):

print("start writing datas...")

try:

for i in range(0,len(item['title'])):

# insert data

sqlstr = "insert into zhaoping(title,companyname,getfree,money) values('%s','%s','%s','%s')"%(item['title'][i],item['comname'][i],item['getfree'][i],item['money'][i])

self.cursor.execute(sqlstr)

self.connect.commit()

self.connect.close()

except exception as error:

# print error

print(error)

return item

6.修改settings.py檔案,如果不修改,程式就不會知道你要執行哪個操作,預設情況下,它被注釋了,去掉注釋就好(300其實就是個執行順序,越小執行越優先):

# configure item pipelines

# see

item_pipelines =

7.試試看,輸入命令「scarpy crawl yingyeyuan」,再去看看資料庫,是不是很神奇啊?(大神勿噴)

scrapy框架全站資料爬取

每個 都有很多頁碼,將 中某板塊下的全部頁碼對應的頁面資料進行爬取 實現方式有兩種 1 將所有頁面的url新增到start urls列表 不推薦 2 自行手動進行請求傳送 推薦 yield scrapy.request url,callback callback專門用做於資料解析 下面我們介紹第二種...

scrapy框架爬取豆瓣電影的資料

1.什麼是scrapy框架?scrapy是乙個為了爬取 資料,提取結構性資料而編寫的應用框架。其可以應用在資料探勘,資訊處理或儲存歷史資料等一系列的程式中。其最初是為了頁面抓取 更確切來說,網路抓取 所設計的,也可以應用在獲取api所返回的資料 例如 amazon associates web se...

使用Scrapy框架爬取鏈家資料

coding utf 8 import scrapy from pachong6.items import pachong6item class lianjiaspider scrapy.spider name lianjia allowed domains m.lianjia.com start ...