爬取**
網頁資訊分析
我們要爬取頁面的名言內容和相對應的標籤內容,存入mysql資料庫中。
通過分析頁面,每乙個名言的div盒子的class名稱都是quote,我們使用css選擇器,先把盒子中內容挑選出來,再對盒子中的內容進行提取。
response.css(".quote")
設v為盒子中的內容
盒子中第乙個span包含名言內容,class名為該盒子中唯一
v.css("span.text::text")
盒子中的class=tags盒子,標籤a中包含標籤內容,且class名字為tag
v.css(".tags .tag::text")
資料庫設定新建乙個scrapymysql的資料庫。
在其中新建乙個表,名字為mingyan,包含三列,分別是id,tag,content
id, int,長度2 主鍵,自增
tag char 長度10
content varchar 長度255
專案
scrapy startproject scarpymysql
import scrapy
class scrapymysqlitem(scrapy.item):
tag = scrapy.field() # 標籤字段
content = scrapy.field() # 名言內容
pass
import scrapy
from scrapymysql.items import scrapymysqlitem
class inputmysql(scrapy.spider):
name = "inputmysql"
allowed_domains = ["lab.scrapyd.cn"]
start_urls = [""]
def parse(self, response):
mingyan = response.css(".quote")
item = scrapymysqlitem() # 例項化item類
for v in mingyan: # 迴圈獲取每一條名言裡面的:名言內容、標籤
item['content'] = v.css("span.text::text").get() # 提取名言內容
tags = v.css(".tags .tag::text").getall() # 提取所有標籤
item['tag'] = ",".join(tags) # 把所有標籤組合成乙個字串
yield item
import pymysql.cursors
import pymysql
class mysqlpipeline(object):
def __init__(self):
# 連線資料庫
self.connect = pymysql.connect(
host="127.0.0.1", # 資料庫位址
port=3306, # 資料庫埠
db="scrapymysql", # 資料庫名稱
user="root", # 資料庫使用者
passwd="root", # 資料庫密碼
charset="utf8", # 資料庫編碼方式
use_unicode=true
)# 通過cursor執行增刪改查
self.cursor = self.connect.cursor()
def process_item(self, item, spider):
self.cursor.execute("insert into mingyan(tag, content) value (%s, %s)", (item['tag'], item['content']))
# 提交sql語句
self.connect.commit()
return item # 必須實現返回
item_pipelines =
啟動專案
scrapy crawl inputmysql
專案結構如下
資料庫結果
Scrapy爬取網頁並儲存到資料庫中
scrapy爬取網頁並儲存到資料庫中 一.新建乙個scrapy工程。進入乙個你想用來儲存 的資料夾,然後執行 t scrapy startproject fjsen 會生成一堆資料夾和檔案 scrapy.cfg 專案配置檔案 tutorial 專案python模組,呆會 將從這裡匯入 tutoria...
Scrapy爬取並儲存到TXT檔案
在建立完成專案並建立爬蟲的基礎上,編寫儲存到txt的專案 1.將 robotstxt obey 設定為false 2.將 item pipelines 開啟 item是scrapy提供的類似於字典型別的資料容器,它與字典最大的區別在於它規定了統一的資料規格樣式,即具有統一性與結構性。這樣既方便資料的...
scrapy爬取資料並儲存到文字
1.scrapy專案結構如下 2.開啟spidler目錄下的duba.py檔案,如下 這個是根據豆瓣一部分頁面獲取的熱門話題內容,有6條資料 coding utf 8 import scrapy from scrapydemo.items import scrapydemoitem from lxm...