最近複習了一下scrapy的內容,發現好多知識點還沒有完全掌握,再來鞏固鞏固。
建立專案:命令列輸入scrapy startproject ×××
進入專案:cd 資料夾名(就是建立專案時的資料夾)
建立爬蟲:scrapy genspider 爬蟲名 ***.com (爬取域)
執行爬蟲:scrapy crawl 爬蟲名字
# -*- coding: utf-8 -*-
# define your item pipelines here
## don't forget to add your pipeline to the item_pipelines setting
# see:
#新片場
# pipeline檔案
# -*- coding: utf-8 -*-
import csv
from xpc.items import postitem, commentitem, copyitem
import pymysql
from redis import redis
import os
class xpcpipeline(object):
def __init__(self):
# 當前檔案的上一級
store_file = os.path.dirname(__file__) + '/xpc.csv'
# 開啟檔案
self.file = open(store_file, 'w', newline="")
# csv 寫法
self.writer = csv.writer(self.file)
def open_spider(self, spider):
print("pipeline 開始爬蟲......")
# 執行多個不同的item時
def process_item(self, item, spider):
if isinstance(item, postitem):
print("這是發布資訊:", item)
elif isinstance(item, commentitem):
elif isinstance(item, copyitem):
return item # 返回給下乙個要執行的管道類
def close_spider(self, spider):
print("pipeline 結束爬蟲......")
# 連線資料庫
class mysqlpipeline(object):
conn = none
cursor = none
def open_spider(self, spider):
self.conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='',
db='test_db',
charset='utf8'
)print("資料庫連線成功")
def process_item(self, item, spider):
self.cursor = self.conn.cursor()
try:
self.cursor.execute('insert into test_db values("%s", "%s")' % (item['author'], item['content']))
self.conn.commit()
except exception as e:
print("資料庫插入異常:", e)
print("資料庫執行回滾")
self.conn.rollback()
return item
def close_spider(self, spider):
print("斷開資料庫連線")
self.cursor.close()
self.conn.close()
# 連線資料庫
class redispipeline(object):
conn = none
cursor = none
def open_spider(self, spider):
self.conn = redis(
host='127.0.0.1',
port=6379
)print("資料庫連線成功")
def process_item(self, item, spider):
dic =
self.conn.lpush("佇列名字", dic)
def close_spider(self, spider):
print("斷開資料庫連線")
self.cursor.close()
self.conn.close()
如有錯誤,歡迎指正 pushmail的一點總結
從push方法上說有ip push和sms push。ip push就是讓手機始終握著gprs,從而有個ip,讓mail server和手機之間始終有個通路,這樣server一旦有郵件就馬上通過ip push到手機終端上了。sms push就是mail server有郵件了,通知運營商push個簡訊...
索引的一點總結
1.索引是一棵b樹 3級索引能容納400萬行資料,4級索引能容納40億行資料。2.表的組織方式有兩種 堆或b樹。當在表上建立乙個聚集索引時,表就組織為乙個b樹 否則就組織為乙個堆。3.聚集索引約佔1 的表大小.非聚集索引佔30 40 表大小,曾見過非聚集索引和資料表一樣大或更大.4.索引碎片 完全沒...
HtmlAgilityPack的一點總結
最近工作中用到了htmlagilitypack的類庫,總的來說使用起來確實感覺挺方便,別的不多說,就這類似於能把html標籤自動補全的load 方法就感覺挺讚 其實上不是不全,而是將不完整的標籤給格式化一下 但這不就足夠了嗎?捨得自己去用正規表示式去匹配,萬一匹配的內容就是html作者寫的文字內容,...