使用Scrapy爬取笑話並存儲到檔案和MySQL
由於專案的需要,必須學習如何使用Scrapy來爬取資料。這篇部落格以爬取笑話網的資料為例,說明Scrapy的基本使用。
安裝配置
我的系統是Win10 64位。因為Python3並不能完全支援Scrapy,因此為了完美執行Scrapy,我們使用Python2.7來編寫和執行Scrapy。
在完成了上面的步驟後再執行一次pip install scrapy
,然後再嘗試執行一下scrapy
,如果出現類似的輸出,則下載成功。
Scrapy 1.3.2 - no active project Usage: scrapy <command> [options] [args] Available commands: bench Run quick benchmark test commands fetch Fetch a URL using the Scrapy downloader genspider Generate new spider using pre-defined templates runspider Run a self-contained spider (without creating a project) settings Get settings values shell Interactive scraping console startproject Create new project version Print Scrapy version view Open URL in browser, as seen by Scrapy [ more ] More commands available when run from project directory Use "scrapy <command> -h" to see more info about a command
建立專案
使用下面的命令建立一個專案:
scrapy startproject joke
建立好的專案結構如下圖所示:
檔案說明:
- scrapy.cfg 專案的配置資訊,主要為Scrapy命令列工具提供一個基礎的配置資訊。(真正爬蟲相關的配置資訊在settings.py檔案中)
- items.py 設定資料儲存模板,用於結構化資料,如:Django的Model
- pipelines 資料處理行為,如:一般結構化的資料持久化
- settings.py 配置檔案,如:遞迴的層數、併發數,延遲下載等
- spiders 爬蟲目錄,如:建立檔案,編寫爬蟲規則
注意:一般建立爬蟲檔案時,以網站域名命名
編寫爬蟲
在spiders目錄中新建 xiaohua_spider.py 檔案。
程式碼如下:
import scrapy class XiaoHuarSpider(scrapy.spiders.Spider): name = "xiaohua" allowed_domains = ["xiaohua.com"] start_urls = [ "http://xiaohua.com/Index/index/type/1.html", ] def parse(self, response): # print(response, type(response)) # from scrapy.http.response.html import HtmlResponse # print(response.body_as_unicode()) current_url = response.url # 爬取時請求的url body = response.body # 返回的html unicode_body = response.body_as_unicode() # 返回的html unicode編碼
幾個注意要點:
- 爬蟲檔案需要定義一個類,並繼承scrapy.spiders.Spider
- 必須定義name,即爬蟲名,如果沒有name,會報錯。因為原始碼中是這樣定義的:
- 編寫函式parse,這裡需要注意的是,該函式名不能改變,因為Scrapy原始碼中預設callback函式的函式名就是parse;
- 定義需要爬取的url,放在列表中,因為可以爬取多個url,Scrapy原始碼是一個For迴圈,從上到下爬取這些url,使用生成器迭代將url傳送給下載器下載url的html。
執行爬蟲
進入joke的目錄,使用下面的命令可以啟動爬蟲。
scrapy crawl xiaohua
沒有錯誤就可以進行下面一步了。
爬取起始頁的笑話
用Chrome分析頁面結構,如下圖所示。
可以看出使用//p[@class='fonts']/a/text()
就可以拿到所有的笑話文字了。
程式碼如下:
import scrapy
from scrapy.selector import HtmlXPathSelector
class XiaoHuarSpider(scrapy.spiders.Spider):
name = "xiaohua"
allowed_domains = ["xiaohua.com"]
start_urls = [
"http://xiaohua.com/Index/index/type/1.html",
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
items = hxs.select('''//p[@class='fonts']/a/text()''')
for item in items:
text = item.extract()
text = text.strip()
print(text)
然後使用下面的命令執行爬蟲即可得到輸出結果:
scrapy crawl xiaohua --nolog
輸出結果如下:
和朋友去吃飯,一哥們喝醉了,跟服務員說:“你猜我用手能起開這瓶啤酒嗎?”服務員笑了下,但是沒說。那哥們又問:“ 你猜我用 手能起開這瓶啤酒不?”服務員說不信,那哥們說:“不信你TM還不去給我拿起子!”
早上起床,不愛搭理老婆。。。。。老婆跟我說話問我幹啥呢!我說死了,又問:那怎麼睜著眼睛?我說:死不瞑目!又問:那為啥還喘氣 ?我說:咽不下這口氣。。。。。。
今天看到的最感人朋友圈:一位大哥真誠地勸大家不要再吃轉基因食品了!對孩子傷害很大!他孩子和他做親子鑑定基因不匹配,就是因為孩子吃轉基因食品把基因改變了。這些知識都是他老婆告訴他的…
有一室友特膽小,晚上一人在廁所大號,廁所沒燈,我們幾個拿著手電筒照著自己的鬼臉,一進廁所那貨嚇得鬼哭狼嚎的,突然抓起幾把屎丟過來!大晚上他在洗手,我們哥幾個在洗澡!
物理課上,我心不在焉的趴在桌上,一心卻想著去網咖擼幾把。這時,老師問:“搬運物體怎麼樣能省力?”有同學回答:“滾!”“回答正確!滾!”老師大聲說…話音剛落,我習慣性從座位上站起來,默默地朝網咖飛奔而去了…身後,老師吶喊:鋤小明!你給我回來…
去食堂吃飯,想打點熱水回來洗澡,就把桶帶上了。排隊時,視窗阿姨拿著鍋鏟衝我這邊吆喝:那小夥子,就你,別往後看,吃飯帶飯盒可以,帶飯桶不行!趕緊換一個!”我……
什麼叫賭氣、我妹買了一輛寶馬X6天天嘚瑟,我就買了一輛蘭博基尼!她一開我就撞!要不是賣家多送了兩塊大電池,還真撞不過!
忍不住看完了。。。
來,繼續。
遞迴爬取網頁
接下來我們需要完成的是繼續爬取下一頁的笑話。使用Chrome可以看到請求載入下一頁笑話的地址是:http://xiaohua.com/index/more
,請求方式是POST,還帶了一個引數:type=1
。如下圖所示:
在解析完成之後只要使用下面的語句就可以遞迴爬取網頁了。
yield Request(url, callback=self.parse)
程式碼如下:
import scrapy
from scrapy import FormRequest
from scrapy.selector import HtmlXPathSelector
class XiaoHuarSpider(scrapy.spiders.Spider):
name = "xiaohua"
allowed_domains = ["xiaohua.com"]
start_urls = [
"http://xiaohua.com/Index/index/type/1.html",
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
items = hxs.select('''//p[@class='fonts']/a/text()''')
for item in items:
text = item.extract()
text = text.strip() + '\n'
print(text)
# recursively get more jokes
more_url = 'http://xiaohua.com/index/more'
return FormRequest(url=more_url,
formdata={'type': '1'},
dont_filter=True,
callback=self.parse)
然後還有一項工作,我們需要配置一個引數用於控制爬蟲爬取的深度(就是載入more的次數)不然我們永遠也結束不了了。
在settings.py檔案中配置DEPTH_LIMIT引數即可。如下圖所示:
然後使用下面的命令執行爬蟲即可:
scrapy crawl xiaohua --nolog
格式化處理
現在我們要做更多的事。之前我們拿到的只有笑話的文字資料,但是從頁面上來看還有更多的內容可以拿。
如圖所示,接下來可以獲取發笑話的使用者名稱,贊數,踩數,評論數。這樣我們就可以拿到最好笑的笑話,或者說可以看那個使用者發的笑話最受歡迎,重點的看他發的笑話。
修改items.py:
程式碼如下:
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class JokeItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
user_name = scrapy.Field()
up_vote_num = scrapy.Field()
down_vote_num = scrapy.Field()
comment_num = scrapy.Field()
joke_text = scrapy.Field()
然後對Spider的程式碼進行一些修改:
import scrapy
from scrapy import FormRequest
from scrapy.selector import HtmlXPathSelector
from joke.items import JokeItem
class XiaoHuarSpider(scrapy.spiders.Spider):
name = "xiaohua"
allowed_domains = ["xiaohua.com"]
start_urls = [
"http://xiaohua.com/Index/index/type/1.html",
]
def parse(self, response):
items = response.xpath('''//div[@class='one-cont']''')
for item_selector in items:
# go on to get elements
user_name = item_selector.xpath('''.//div[@class='one-cont-font clearfix']/i/text()''').extract_first()
up_vote_num = item_selector.xpath('''.//li[@class='active zan range']/span/text()''').extract_first()
down_vote_num = item_selector.xpath('''.//li[@class='range cai']/span/text()''').extract_first()
comment_num = item_selector.xpath('''.//li[@class='range jxi']/span/text()''').extract_first()
joke_text = item_selector.xpath('''.//p[@class='fonts']/a/text()''').extract_first()
joke_text = joke_text.strip() + '\n'
joke_id = item_selector.xpath('''.//p[@class='fonts']/a/@href''').extract_first()
joke_id = joke_id.replace('/Index/pinlun/id/','')
joke_id = joke_id.replace('/type/1.html','')
# data_list = [joke_id,user_name,up_vote_num,down_vote_num,comment_num]
# print('\t'.join(data_list))
# print(joke_text)
item = JokeItem()
item['joke_id'] = joke_id
item['user_name'] = user_name
item['up_vote_num'] = up_vote_num
item['down_vote_num'] = down_vote_num
item['comment_num'] = comment_num
item['joke_text'] = joke_text
yield item
# recursively get more jokes
more_url = 'http://xiaohua.com/index/more'
yield FormRequest(url=more_url,
dont_filter=True,
formdata={'type': '1'},
callback=self.parse)
呼叫yield item
之後Scrapy就會把Item交給pipelines的類來處理。
修改pipelines.py。
我們先把爬到的笑話存到一個檔案裡。程式碼如下:
# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
class JokePipeline(object):
def process_item(self, item, spider):
return item
class JokeFilePipeLine(object):
def __init__(self):
self.file = open('d:/jokes', 'wb')
def process_item(self, item, spider):
line = "%s\t%s\t%s\t%s\t%s\t%s\n" % (item['joke_id'],
item['user_name'],
item['up_vote_num'],
item['down_vote_num'],
item['comment_num'],
item['joke_text'])
self.file.write(line.encode("utf-8"))
return item
然後修改一下settings.py,指定使用我們新寫的pipeline。
# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
'joke.pipelines.JokePipeline': None,
'joke.pipelines.JokeFilePipeLine': 300
}
後面的None是指不使用這個pipeline,300是一個優先順序,數字越大,優先順序越高。
執行後即可在檔案中看到爬取的笑話。
將笑話寫入MySQL
配置Python和MySQL的連線
建立表和儲存過程
使用下面的程式碼建立表:
CREATE TABLE jokes(
id VARCHAR(255) PRIMARY KEY,
userName VARCHAR(255),
upVoteNum INT,
downVoteNum INT,
commentNum INT,
jokeText TEXT)
使用下面的程式碼建立儲存過程:
DELIMITER $$
CREATE
PROCEDURE `jokedb`.`addJoke`(IN jokeId VARCHAR(255),IN userName VARCHAR(255),IN upVoteNum INT,IN downVoteNum INT,IN commentNum INT,IN jokeText TEXT)
BEGIN
SET @jokeId = jokeId;
SET @upVoteNum = upVoteNum;
SET @downVoteNum = downVoteNum;
SET @commentNum = commentNum;
SET @jokeText = jokeText;
SET @userName = userName;
SET @existsFlag='';
SELECT id INTO @existsFlag FROM jokes WHERE id = @jokeId LIMIT 1;
IF @existsFlag = '' THEN
SET @insertSql = CONCAT('INSERT INTO jokes VALUES(?,?,?,?,?,?)');
PREPARE stmtinsert FROM @insertSql;
EXECUTE stmtinsert USING @jokeId,@userName,@upVoteNum,@downVoteNum,@commentNum,@jokeText;
DEALLOCATE PREPARE stmtinsert;
END IF;
END$$
DELIMITER ;
呼叫MySQL的儲存過程測試程式碼
# -*- coding: utf-8 -*-
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='root',passwd='sorry',db='jokedb',charset="utf8")
cur =conn.cursor()
cur.callproc('addJoke',('1000','張三',0,100,100,'測試啊啊啊啊'))
cur.close()
conn.commit()
conn.close()
這樣雖然可以實現寫入MySQL,但是沒執行一次都要重新建立連線,非常耗費資源。一個比較好的方法是使用資料庫連線池。
使用下面的程式碼來安裝DBUtils:
pip install DBUtils
然後修改程式碼:
# -*- coding: utf-8 -*-
import MySQLdb
from DBUtils.PooledDB import PooledDB
pool = PooledDB(MySQLdb,5,host='localhost',user='root',passwd='sorry',db='jokedb',port=3306,charset="utf8") #5為連線池裡的最少連線數
conn = pool.connection()
cur =conn.cursor()
cur.callproc('addJoke',('1000','張三',0,100,100,'測試啊啊啊啊'))
cur.close()
conn.commit()
conn.close()
編寫pipelines程式碼
class JokeMySqlPipeLine(object):
def __init__(self):
self.pool = PooledDB(MySQLdb,5,host='localhost',user='root',passwd='sorry',db='jokedb',port=3306,charset="utf8")
def process_item(self, item, spider):
conn = self.pool.connection()
cur = conn.cursor()
cur.callproc('addJoke', (item['joke_id'], item['user_name'], int(item['up_vote_num']),
int(item['down_vote_num']), int(item['comment_num']), item['joke_text']))
cur.close()
conn.commit()
conn.close()
然後把這個pipelines配上去。
# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
'joke.pipelines.JokePipeline': None,
'joke.pipelines.JokeFilePipeLine': None,
'joke.pipelines.JokeMySqlPipeLine': 300
}
執行爬蟲,即可在MySQL中看到爬取到的笑話:
小優化
download_delay
設定這個值可以使爬蟲在爬完一個頁面後停一下,避免太過集中的訪問被伺服器封掉。
可以在settings.py中設定,也可以在Spider中設定,我在Spider中設定了。
class XiaoHuarSpider(scrapy.spiders.Spider):
name = "xiaohua"
allowed_domains = ["xiaohua.com"]
download_delay = 2
......
使用user agent池
所謂的user agent,是指包含瀏覽器資訊、作業系統資訊等的一個字串,也稱之為一種特殊的網路協議。伺服器通過它判斷當前訪問物件是瀏覽器、郵件客戶端還是網路爬蟲。在request.headers可以檢視user agent。如下,使用scrapy shell檢視:
scrapy shell http://blog.csdn.net/u012150179/article/details/34486677
進而輸入如下,可得到uesr agent資訊:
request.headers
由此得到,scrapy本身是使用Scrapy/1.3.2來表明自己身份的。這也就暴露了自己是爬蟲的資訊。
首先編寫自己的UserAgentMiddle中介軟體,新建rotate_useragent.py,程式碼如下:
建立user agent池(user_agent_list)並在每次傳送request之前從agent池中隨機選取一項設定request的User_Agent。編寫的UserAgent中介軟體的基類為UserAgentMiddle。
# -*-coding:utf-8-*-
from scrapy import log
"""避免被ban策略之一:使用useragent池。
使用注意:需在settings.py中進行相應的設定。
"""
import random
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware
class RotateUserAgentMiddleware(UserAgentMiddleware):
def __init__(self, user_agent=''):
self.user_agent = user_agent
def process_request(self, request, spider):
ua = random.choice(self.user_agent_list)
if ua:
# Show current useragent
print "********Current UserAgent:%s************" %ua
# do the log
# log.msg('Current UserAgent: '+ua, level='INFO')
request.headers.setdefault('User-Agent', ua)
# the default user_agent_list composes chrome,I E,firefox,Mozilla,opera,netscape
# for more user agent strings,you can find it in http://www.useragentstring.com/pages/useragentstring.php
user_agent_list = [
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 "
"(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 "
"(KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 "
"(KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 "
"(KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 "
"(KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 "
"(KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 "
"(KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
"(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 "
"(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 "
"(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]
除此之外,要在settings.py(配置檔案)中禁用預設的useragent並啟用重新實現的User Agent。配置方法如下:
#取消預設的useragent,使用新的useragent
DOWNLOADER_MIDDLEWARES = {
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware' : None,
'joke.rotate_useragent.RotateUserAgentMiddleware' :400
}
總結
算是初步的體驗了一下Scrapy,感覺還是很強大的。這篇部落格也為專案打下了一定的基礎。後續還要再好好學一下Scrapy。
參考資料
相關推薦
使用Scrapy爬取笑話並存儲到檔案和MySQL
由於專案的需要,必須學習如何使用Scrapy來爬取資料。這篇部落格以爬取笑話網的資料為例,說明Scrapy的基本使用。 安裝配置 我的系統是Win10 64位。因為Python3並不能完全支援Scrapy,因此為了完美執行Scrapy,我們使用Pyt
【爬蟲例項1】python3下使用beautifulsoup爬取資料並存儲txt檔案
1:執行環境: python: 3.7.0 系統:Windows IDE:pycharm 2017 2:需要安裝的庫: requests 和 beautifulsoup 3:完整程式碼: # cod
使用Python3和BeautifulSoup爬取笑話網站內容,並匯入Excel
本文使用Python3和BeautifulSoup爬取網站內容,並匯入Excel。 #抓取糗事百科笑話的指令碼 import urllib.request from bs4 import BeautifulSoup import xlwt #寫入檔案 import
python 讀取資料庫中的BLOB型別欄位,並存儲檔案到本地
import os import cx_Oracle os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' db_orcl = cx_Oracle.connect("使用者/[email protected]/orcl"
[python爬蟲] Selenium爬取內容並存儲至MySQL資料庫
前面我通過一篇文章講述瞭如何爬取CSDN的部落格摘要等資訊。通常,在使用Selenium爬蟲爬取資料後,需要儲存在TXT文字中,但是這是很難進行資料處理和資料分析的。這篇文章主要講述通過Selenium爬取我的個人部落格資訊,然後儲存在資料庫MySQL中,以便
Scrapy爬取網易雲音樂和評論(一、思路分析)
目錄: 前提: scrapy這個框架很多人用過,網上教程也很多,但大多就是爬爬小說這種比較簡單且有規律的,網易雲音樂也有很多人寫過,也有API,不過大多是爬取了熱門歌曲,或是從歌單下手,但是考慮到歌單會有很多重複的。當然,從歌手頁的話,如果
scrapy爬取拉勾網python職位+Mysql+視覺化
在進行爬取目標網站中為遇到一個問題,爬取5頁資料之後會出錯,設定了每一次請求的隨機超時間10-20->time.sleep(random.randint(10, 20)),同樣會被拉勾網禁止請求資料,可能被輕度判定為爬取,所以可以設定每一次的隨機超時間為20-30秒,就可以解決這個問題。
scrapy爬取資料之後,如何存入mysql
pipelines.py檔案中新建MySQLPipeline類: # 匯入庫 from scrapy.utils.project import get_project_settings import
scrapy爬取前程無憂51job網職位資訊並存儲到資料庫
spiders中程式碼如下 import scrapy from scrapy import Request from QianCheng.items import QianchengItem import re class ExampleSpider(s
java物件序列化並存儲到檔案和資料庫
Java中要實現將物件儲存起來持久化,需要讓物件實現Serializable介面,這樣就能將java物件用二進位制流儲存並恢復。下面我將以儲存到檔案和儲存到mysql來進行解析。先給出序列化類的定義:package model; import java.io.Seriali
scrapy 詳細例項-爬取百度貼吧資料並儲存到檔案和和資料庫中
Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架。 可以應用在包括資料探勘,資訊處理或儲存歷史資料等一系列的程式中。使用框架進行資料的爬取那,可以省去好多力氣,如不需要自己去下載頁面、資料處理我們也不用自己去寫。我們只需要關注資料的爬取規則就行,scrap
資料視覺化 三步走(一):資料採集與儲存,利用python爬蟲框架scrapy爬取網路資料並存儲
前言 最近在研究python爬蟲,突然想寫部落格了,那就寫點東西吧。給自己定個小目標,做一個完整的簡單的資料視覺化的小專案,把整個相關技術鏈串聯起來,目的就是為了能夠對這塊有個系統的認識,具體設計思路如下: 1. 利用python爬蟲框架scr
用Python Scrapy爬取某電影網站並存儲入mysql
爬取目標:javlib,使用框架Scrapy 首先使用在命令列裡scrapy startproject projectname和scrapy genspider spidername指令建立爬蟲。 首先定義items.pyimport scrapy class Av
【附上解釋】爬取A股所有上市公司的資訊並存儲到資料庫或者是csv檔案中
輸入到mysql版 輸出會有警告,但是不影響。 附上了詳細的解釋~ import pandas as pd import requests import random from bs4 import BeautifulSoup import pymysql f
爬取貓眼top100電影並存儲在本地csv檔案中
import requests from bs4 import BeautifulSoup import time import csv def getcontent(url): #網頁請求頭
scrapy爬取海量資料並儲存在MongoDB和MySQL資料庫中
前言 一般我們都會將資料爬取下來儲存在臨時檔案或者控制檯直接輸出,但對於超大規模資料的快速讀寫,高併發場景的訪問,用資料庫管理無疑是不二之選。首先簡單描述一下MySQL和MongoDB的區別:MySQL與MongoDB都是開源的常用資料庫,MySQL是傳
使用selenium結合PhantomJS爬取淘寶美食並存儲到MongoDB
cnblogs exc cte ota browser -- pre command out PhantomJS是一種沒有界面的瀏覽器,便於爬蟲 1、PhantomJS下載 2、phantomjs無須安裝driver,還有具體的api參考: http://phantomj
Scrapy爬取豆瓣電影top250的電影數據、海報,MySQL存儲
p地址 rom gin ani char 代碼 pipeline print 關閉數據庫 從GitHub得到完整項目(https://github.com/daleyzou/douban.git)1、成果展示數據庫本地海報圖片2、環境(1)已安裝Scrapy的Pycharm
scrapy 組合多個頁面的數據一並存儲
存儲 blank bsp 頁面 tps 信息 www quest ans 暫不重復,請看參考信息 參考: https://segmentfault.com/q/1010000009651745/a-1020000009652641 https://www.jianshu.
scrapy爬取京東商城某一類商品的資訊和評論(二)
2、任務二:爬取商品評論資訊 如果不需要爬取使用者的地域資訊,那麼用這個網址爬就好: http://club.jd.com/review/10321370917-1-1-0.html 其中10321370917是商品的ID,評論的第一頁就是 -1-1-0.htm