2.初始化
沒有前輩的經驗借鑑,只好自己處理了,換了臺電腦安裝,結果同樣要匯入vcruntime140_1.dll檔案,不同的是這次我直接匯入到了,mysql的資料夾中,開啟cmd執行成功了!!!於是照搬到第一台電腦上(這台電腦沒有python,實在不想再下一次)總算是完成了初始化。
另外,有可能需要讓cmd以管理員身份執行:
使用就ok了:
在此之前,花了幾周閒暇時間學習python和urllib庫的爬蟲操作(在這裡我想吐槽由於大資料導論,這門本該大三上的課程被學院調整到大一之後仍然要完成同樣的專案的操作實在是太秀了)現在總算是進軍scrapy爬蟲了
1.items
# -*- coding: utf-8 -*-
# define here the models for your scraped items
## see documentation in:
# # 以上為basic模板的爬蟲自帶的資訊
import scrapy
class
dangdangitem
(scrapy.item)
:# define the fields for your item here like:
# name = scrapy.field()
title = scrapy.field(
)
link = scrapy.field(
)
comment = scrapy.field(
) price = scrapy.field(
)
構造容器,分別裝上爬取的內容。
)#封存list
item[
'link'
]= response.xpath(
'//a[@name="itemlist-title"]/@href'
).extract(
) item[
'comment'
]= response.xpath(
'//a[@name="itemlist-review"]/text()'
).extract(
) listofprice = response.xpath(
'//span[@class="search_now_price"]/text()'
).extract(
) item[
'price']=
[x.replace(
'\xa5',''
)for x in listofprice]
#發現xpath表示式提取的**前面會多出來這個'\xa5'就利用列表生成器將之處理掉了
#print(item['title']) #測試
yield item
#每提取一頁就交給pipelines進行處理,接下來實現自動翻頁
for i in
range(2
,75):
url =
''+str
(i)+
'-cp98.01.54.00.00.00.html'
yield request(url,callback = self.parse)
3.pipelines
pipelines是處理爬取資料的py檔案
# -*- coding: utf-8 -*-
# define your item pipelines here
## don't forget to add your pipeline to the item_pipelines setting
# see:
import pymysql
class
dangdangpipeline
:def
process_item
(self, item, spider)
: conn = pymysql.connect(host =
'127.0.0.1'
, user =
'root'
, passwd =
'hust2020'
, db =
'dangdang'
) conn.autocommit(
true
)#自動提交到sql,沒有這一句是無法自動完成sql語句的執行的
cur = conn.cursor(
)#設定游標
create_table =
'create table if not exists csbooks1(title varchar(100), link varchar(100), comment varchar(100), price varchar(100));'
#構建table
cur.execute(create_table)
for i in
range
(len
(item[
'title'])
):title = item[
'title'
][i]
link = item[
'link'
][i]
comment = item[
'comment'
][i]
price = item[
'price'
][i]
#print(title + '\n' + link + '\n' + comment + '\n' + price)
sql =
"insert into csbooks1(title, link, comment, price) values ('"
+ title +
"','"
+ link +
"','"
+ comment +
"','"
+ price +
"');"
#構造sql語句
#conn.query(sql) #執行sql語句
try:
cur.execute(sql)
except exception as err:
print
(err)
conn.close(
)return item
4.settings
直接執行爬蟲的話會出大問題,你啥也拿不到,因為我們爬取的**通過robot協議阻止了我們的「攻擊行為」,所以我們需要設定我們的爬蟲不遵循robot協議,但是一定要注意不要真的做那些過火的事情:
# obey robots.txt rules
robotstxt_obey =
false
#預設為true
在mysql系統中找到自己的database,然後通過指令語句:
mysql> select * from csbooks1 limit 50;
結果為:
看看爬取的條數:(好像74頁內容吧)
距離成功完成ibd的任務還很遠,需要繼續學,五月底我們行嗎?
為了我的幸福
今天悲喜交集。悲的是 一直沒ci,一句svn rm forece讓這一且全沒了。找了乙個恢復軟體,恢復到11點多,晚上還要回學校睡覺,明天再說吧。最少要用兩天最壞要用兩個禮拜才能恢復原貌。只是因為一句命令,一時手快,疏忽所致嗎?往淺裡說,是沒有做好備份。這很重要。首先經常改動的東西一定要做版本控制。...
我思考,為了不讓你思考!
最近一段時間,設計做的比較多,感觸良多!而感觸當中,最感慨的就是,我是程式設計師,還是乙個使用者!貌似這些話聽起來有些繞口,也有些不清不楚的,不過這的確是個事實。乙個程式設計師在思考問題時,通常想的是程式實現的方式 方法,難易程度,如何規避掉一些問題 至少我是!而乙個系統的實際使用者,所想的就是功能...
我的存在是為了什麼?
曾經有很長一段時間,我都很迷茫我活著到底是為了什麼?通過一段時間的追尋,我找到了答案 1.為了自己的理想 開一家像微軟一樣的公司,屹立與世界之上。為全世界服務。2.為了自己及身邊的人的幸福 我想要什麼樣的生活?今年的春節和小孩子玩感覺很愜意,覺得就想要小孩子一樣的生活 3.為了知識的傳承 教育好下一...