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 ...