scrapy的一點總結

2021-10-05 20:47:02 字數 2490 閱讀 3536

最近複習了一下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作者寫的文字內容,...