日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

yspider爬取数据导入mysql_爬虫实战四、PyCharm+Scrapy爬取数据并存入MySQL

發布時間:2025/3/21 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yspider爬取数据导入mysql_爬虫实战四、PyCharm+Scrapy爬取数据并存入MySQL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、創建爬蟲項目

注意:不能直接使用PyCharm創建Scrapy項目,所以需要在爬蟲實戰三、PyCharm搭建Scrapy開發調試環境的基礎(PyCharm配置完Scrapy)之上,選中mySpider項目,點擊PyCharm中下方的Terminal,進入對應的命令行,執行命令創建doubanSpider項目

scrapy startproject doubanSpider

進入命令行。

TIM截圖20190215160227.png

創建項目。

圖片.png

二、創建爬蟲并編寫代碼

爬蟲項目生成后,進入項目路徑。

圖片.png

執行命令創建douban爬蟲

scrapy genspider douban "movie.douban.com"

2-1、編寫items.py

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

# Define here the models for your scraped items

#

# See documentation in:

# https://doc.scrapy.org/en/latest/topics/items.html

import scrapy

class DoubanspiderItem(scrapy.Item):

# 電影標題

title = scrapy.Field()

# 電影信息

info = scrapy.Field()

# 電影評分

score = scrapy.Field()

# 評分人數

number = scrapy.Field()

# 簡介

content = scrapy.Field()

2-2、編寫spiders/douban.py

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

import scrapy

from doubanSpider.items import DoubanspiderItem

class DoubanSpider(scrapy.Spider):

name = "douban"

allowed_domains = ["movie.douban.com"]

start = 0

url = 'https://movie.douban.com/top250?start='

end = '&filter='

start_urls = [url + str(start) + end]

def parse(self, response):

item = DoubanspiderItem()

movies = response.xpath("//div[@class=\'info\']")

for movie in movies:

name = movie.xpath('div[@class="hd"]/a/span/text()').extract()

message = movie.xpath('div[@class="bd"]/p/text()').extract()

star = movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()

number = movie.xpath('div[@class="bd"]/div[@class="star"]/span/text()').extract()

quote = movie.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract()

if quote:

quote = quote[0]

else:

quote = ''

item['title'] = ''.join(name)

item['info'] = quote

item['score'] = star[0]

item['content'] = ';'.join(message).replace(' ', '').replace('\n', '')

item['number'] = number[1].split('人')[0]

# 提交item

yield item

if self.start <= 225:

self.start += 25

yield scrapy.Request(self.url + str(self.start) + self.end, callback=self.parse)

2-3、編寫pipelines.py

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

# Define your item pipelines here

#

# Don't forget to add your pipeline to the ITEM_PIPELINES setting

# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html

from pymysql import cursors

from twisted.enterprise import adbapi

import time

import copy

class DoubanspiderPipeline(object):

# 初始化函數

def __init__(self, db_pool):

self.db_pool = db_pool

# 從settings配置文件中讀取參數

@classmethod

def from_settings(cls, settings):

# 用一個db_params接收連接數據庫的參數

db_params = dict(

host=settings['MYSQL_HOST'],

user=settings['MYSQL_USER'],

password=settings['MYSQL_PASSWORD'],

port=settings['MYSQL_PORT'],

database=settings['MYSQL_DBNAME'],

charset=settings['MYSQL_CHARSET'],

use_unicode=True,

# 設置游標類型

cursorclass=cursors.DictCursor

)

# 創建連接池

db_pool = adbapi.ConnectionPool('pymysql', **db_params)

# 返回一個pipeline對象

return cls(db_pool)

# 處理item函數

def process_item(self, item, spider):

# 對象拷貝,深拷貝 --- 這里是解決數據重復問題!!!

asynItem = copy.deepcopy(item)

# 把要執行的sql放入連接池

query = self.db_pool.runInteraction(self.insert_into, asynItem)

# 如果sql執行發送錯誤,自動回調addErrBack()函數

query.addErrback(self.handle_error, item, spider)

# 返回Item

return item

# 處理sql函數

def insert_into(self, cursor, item):

# 創建sql語句

sql = "INSERT INTO movie (title,info,score,number,content,createtime) VALUES ('{}','{}','{}','{}','{}','{}')".format(

item['title'], item['info'], item['score'], item['number'], item['content'],

time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

# 執行sql語句

cursor.execute(sql)

# 錯誤函數

def handle_error(self, failure, item, spider):

# #輸出錯誤信息

print("failure", failure)

2-4、編寫settings.py

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

BOT_NAME = 'doubanSpider'

SPIDER_MODULES = ['doubanSpider.spiders']

NEWSPIDER_MODULE = 'doubanSpider.spiders'

# Obey robots.txt rules

ROBOTSTXT_OBEY = True

USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'

# Configure item pipelines

# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html

ITEM_PIPELINES = {

'doubanSpider.pipelines.DoubanspiderPipeline': 300

}

# 連接數據MySQL

# 數據庫地址

MYSQL_HOST = 'localhost'

# 數據庫用戶名:

MYSQL_USER = 'root'

# 數據庫密碼

MYSQL_PASSWORD = 'root'

# 數據庫端口

MYSQL_PORT = 3306

# 數據庫名稱

MYSQL_DBNAME = 'mydb'

# 數據庫編碼

MYSQL_CHARSET = 'utf8'

在創建爬蟲并編寫代碼時遇到的坑

坑1、Unresolved reference ‘xxx’ 或者顯示 scrapy No module named ×××.items

TIM截圖20190215170939.png

坑1、解決辦法

將爬蟲項目的文件夾類型改為Sources Root

TIM截圖20190215171022.png

坑2、連接MySQL時缺少pymysql

TIM截圖20190215171154.png

坑2、解決辦法

點擊File-> Settings->Project: mySpider->Project Interpreter,導入pymysql包。具體添加包的流程參考爬蟲實戰三、PyCharm搭建Scrapy開發調試環境。

TIM截圖20190215171242.png

三、使用Pycharm連接MySQL數據庫

連接MySQL的工具有很多,Pycharm本身也可以連接MySQL和其他多種數據庫,并且提示功能比較強大,這里我使用Pycharm連接MySQL數據庫。

TIM截圖20190215171919.png

選擇數據庫類型,MySQL

TIM截圖20190215171941.png

設置連接別名,主機,數據庫,用戶名,密碼。

TIM截圖20190215172302.png

設置完畢,連接MySQL。

圖片.png

四、創建爬蟲項目對應的表以及執行爬蟲。

4-1、創建表

圖片.png

創建movie表,注意 default charset = utf8 此處要和爬蟲程序編碼一致,否則存入到MySQL失敗。

drop table movie;

CREATE TABLE `movie`

(

`id` int(100) NOT NULL AUTO_INCREMENT,

`title` varchar(2048) DEFAULT NULL,

`info` varchar(2048) DEFAULT NULL,

`score` varchar(2048) DEFAULT NULL,

`number` varchar(2048) DEFAULT NULL,

`content` varchar(2048) DEFAULT NULL,

`createtime` varchar(2048) DEFAULT NULL,

PRIMARY KEY (`id`)

) engine = InnoDB

default charset = utf8;

4-2、執行爬蟲

在爬蟲項目對應的命令行中執行命令,運行爬蟲

scrapy crawl douban

TIM截圖20190215171741.png

4-3、查詢數據,驗證結果

在本地連接中執行SQL:

select * from movie;

TIM截圖20190215172554.png

爬蟲數據并存入MySQL成功。注意,網上有部分博客實踐后出現數據重復問題,此處我已經修改過代碼保證數據不重復。

TIM截圖20190215172854.png

總結

以上是生活随笔為你收集整理的yspider爬取数据导入mysql_爬虫实战四、PyCharm+Scrapy爬取数据并存入MySQL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩av在线影院 | 亚洲永久视频 | 久久亚洲免费视频 | 一级淫片a | 国产精品久久久久久一区二区三区 | 欧美在线v | 天堂中文在线观看视频 | 亚洲一区二区三区四区在线观看 | av新天堂 | 国产欧美视频在线播放 | 毛片在线免费观看视频 | 在线麻豆av | 天天操中文字幕 | 日本少妇xxxx动漫 | 九九久久网 | 天堂一区| 涩天堂 | 无码一区二区三区免费视频 | 欧美精品黑人猛交高潮 | 成人动漫在线观看免费 | 亚洲激情视频在线观看 | 一本一本久久a久久精品综合麻豆 | 欧美啪啪网站 | 免费观看一区二区三区 | 麻豆精品在线视频 | 日噜 | 精品久久久久亚洲 | 国产伦精品一区二区三区千人斩 | 中文字幕乱码av | 一级免费观看 | 一个色综合久久 | 91狠狠干| 国产经典三级在线 | 四虎网站在线播放 | 成年人91视频 | 亚洲麻豆一区二区三区 | 国产精品mm| 日韩三级在线免费观看 | 欧洲综合视频 | 人妻互换免费中文字幕 | 狠狠艹av | 午夜视频在线播放 | 秋霞伦理一区二区 | 先锋影视av | 美女张开腿让男人操 | 波多野吉衣视频在线观看 | 欧美高清视频在线观看 | xxx一区二区 | 色呦 | 天天艹夜夜 | 黑色丝袜吻戏亲胸摸腿 | 4438亚洲| 日本福利一区 | 色婷婷a | www.操com | 刘亦菲毛片一区二区三区 | 日本熟妇人妻中出 | 欧美黄色免费看 | 中文区中文字幕免费看 | 亚洲av日韩av永久无码下载 | 99免费精品视频 | 女人性高潮视频 | 一级片小视频 | 日本va欧美va精品发布 | 亚洲精品久久久久久动漫器材一区 | 一区二区三区日 | 久久视频一区二区三区 | 麻豆短视频在线观看 | 性高潮久久久久 | 免费无遮挡无码永久在线观看视频 | 国产精彩视频在线 | 国产免费久久精品国产传媒 | 日本在线一本 | 97se亚洲国产综合在线 | 亚洲av无码专区在线 | 成人一区二 | 中文字幕亚洲一区二区三区五十路 | 女的高潮流时喷水图片大全 | 他揉捏她两乳不停呻吟动态图 | 亚洲精品白浆高清久久久久久 | 黄色一级毛片 | 不卡av在线播放 | 1024视频污 | 精品丰满人妻无套内射 | 中文字幕亚洲一区二区三区 | 欧美成人猛片aaaaaaa | 国产日韩第一页 | 国产色视频一区二区三区qq号 | 91精品又粗又猛又爽 | 欧美精品免费播放 | 亚洲精品白虎 | 精品国产免费看 | 国产视频九色蝌蚪 | 黑人玩弄人妻一区二区三区 | 久久视频黄色 | 精品自拍偷拍 | 九七影院在线观看免费观看电视 | 无码精品人妻一二三区红粉影视 | 差差差30分钟 |