目標**:
注意檢視位址最後的,有規律。
3103-2998+1=106,但是有三章位址是重複的,所有實際有103個位址,103個章節,正好符合目錄列表,(多餘的這三個章節等爬取下來後再手動刪除)
scrapy startproject quotetutorial
cd quotetutorial
scrapy genspider quotes www.snwx3.com
專案結構如下:
目的是直接執行這個檔案從而執行爬蟲,就不用在命令列中執行爬蟲了
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from scrapy.cmdline import execute
execute(['scrapy', 'crawl', 'quotes']) # quotes為quotes.py檔案中的name變數的值
pages = list(range(2998,3104)) # 遍歷頁數
def start_requests(self):
# 遍歷迴圈圖書索引頁
for page in self.pages:
url = self.base_url + str(page) + ".html" # 構造請求位址
print('請求第%s頁' % (url))
yield scrapy.request(url=url, callback=self.parse)
def parse(self, response):
res = response.css('#booktext::text').extract() # 使用瀏覽器的css選擇器功能
# print(res)
item = quotetutorialitem()
item['text'] = res
yield item
使用瀏覽器的css選擇器功能
text = scrapy.field() # 只獲取內容,章節標題最後新增
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
class quotetutorialpipeline:
def process_item(self, item, spider):
base_dir = os.getcwd()
fiename = base_dir + '/new2.txt' # 儲存檔案到當前目錄
with open(fiename, 'a',encoding='utf-8') as f: # 防止亂碼
text = "".join(item['text']) # list轉str
f.write(text + '\n')
return item
robotstxt_obey = false # 設定為false,表示不准收robots.txt規則
item_pipelines =
爬取後的結果是一行乙個章節,使用notepad++軟體操作,刪除空白行,刪除掉三個重複的章節,正好103行,表示103個章節,根據目標**的位址,獲取每章的名稱,然後使用塊編輯複製貼上到每行的開頭,完美。
scrapy 爬取流程
什麼時候到pipeline,什麼 時候到spider這個就不說了,這個是框架跳轉到的流程 關鍵是訪問之前要登入怎麼辦,資料還要注入呢 這是個列表,裡面就是爬取的鏈結了 我們前面爬取就只是寫了乙個,但是其實可以寫多個 鏈結又是怎麼訪問的呢 這東西你就可以手動提取鏈結返回了 這東西你就得好好注意了 從入...
scrapy 爬取小說
速度是相當的快的 爬取整站的 最後結果儲存至mongodb資料庫 pycharm開發還是很好用的 建立專案 scrapy startproject daomubiji 執行專案 scrapy crawl daomubi settings default request headers items t...
scrapy爬取噹噹
import scrapy from items import dangdangitem class ddspider scrapy.spider name dd allowed domains dangdang.com start urls def parse self,response 使用xp...