成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Scrapy網絡爬蟲框架小試牛刀

開發 前端
這次咱們來玩一個在Python中很牛叉的爬蟲框架——Scrapy。

[[374565]]

前言

這次咱們來玩一個在Python中很牛叉的爬蟲框架——Scrapy。

scrapy 介紹

標準介紹

  • Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架,非常出名,非常強悍。所謂的框架就是一個已經被集成了各種功能(高性能異步下載,隊列,分布式,解析,持久化等)的具有很強通用性的項目模板。對于框架的學習,重點是要學習其框架的特性、各個功能的用法即可。

說人話就是

  • 只要是搞爬蟲的,用這個就van事了,因為里面集成了一些很棒的工具,并且爬取性能很高,預留有很多鉤子方便擴展,實在是居家爬蟲的不二之選。

windows下安裝scrapy

命令

  1. pip install scrapy 

默認情況下,直接pip install scrapy可能會失敗,如果沒有換源,加上臨時源安裝試試,這里使用的是清華源,常見安裝問題可以參考這個文章:Windows下安裝Scrapy方法及常見安裝問題總結——Scrapy安裝教程。

命令

  1. pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 

scrapy創建爬蟲項目

命令

  1. scrapy startproject <項目名稱> 

示例:創建一個糗事百科的爬蟲項目(記得cd到一個干凈的目錄哈)

  1. scrapy startproject qiushibaike 

 

注:此時,我們已經創建好了一個爬蟲項目,但是爬蟲項目是一個文件夾

 

進入爬蟲項目

如果想要進入這個項目,就要cd進這個目錄,如上上圖所示,先cd <項目>,再創建蜘蛛


項目目錄結構解析

此時,我們就已經進入了項目,結構如下,有一個和項目名同名的文件夾和一個scrapy.cfg文件

  1. scrapy.cfg # scrapy配置,特殊情況使用此配置 
  2. qiushibaike # 項目名同名的文件夾 
  3.     items.py # 數據存儲模板,定制要保存的字段 
  4.     middlewares.py # 爬蟲中間件 
  5.     pipelines.py # 編寫數據持久化代碼 
  6.     settings.py # 配置文件,例如:控制爬取速度,多大并發量,等 
  7.     __init__.py 
  8.     spiders # 爬蟲目錄,一個個爬蟲文件,編寫數據解析代碼 
  9.         __init__.py 

呃,可能此時你并不能懂這么些目錄什么意思,不過不要慌,使用一下可能就懂了,別慌。

創建蜘蛛

通過上述的操作,假設你已經成功的安裝好了scrapy,并且進入了創建的項目

那么,我們就創建一個蜘蛛,對糗事百科的段子進行爬取。


創建蜘蛛命令

  1. scrapy genspider <蜘蛛名稱> <網頁的起始url> 

示例:創建糗事百科的段子蜘蛛

  1. scrapy genspider duanzi ww.com 

 

注:網頁的起始url可以隨便寫,可以隨便改,但是必須有

此時在spider文件夾下,會多一個duanzi.py文件


代碼解釋如下

 

爬取數據前準備

創建好蜘蛛之后,需要在配置一些東西的,不能直接就爬的,默認是爬取不了的,需要簡單配置一下

打開settings.py文件,找到ROBOTSTXT_OBEY和USER_AGENT變量

ROBOTSTXT_OBEY配置

等于False不遵守robot協議,默認只有搜索引擎網站才會允許爬取,例如百度,必應等,個人爬取需要忽略這個,否則爬取不了

 

USER_AGENT配置

User-Agent是一個最基本的請求必須帶的參數,如果這個帶的不是正常的,必定爬取不了。

User-Agent

  1. Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 

 

小試牛刀之獲取糗事百科段子段子鏈接

準備工作做好了,那就開始吧!!!

此處我們需要有xpath的語法基礎,其實挺簡單的,沒有基礎的記得百度一下,其實不百度也沒關系,跟著學,大概能看懂

實現功能

通過xpath獲取每個段子下的a標簽連接

注:審查元素和按住crtl+f搜索內容和寫xpath這里不再啰嗦

分析頁面規則

 

通過審查工具,我們可以看到,class包含article的標簽就是一個個的文章,可能你想到xpath可能可以這樣寫

xpath代碼

  1. //div[@class='article'

但是你會發現一個都查不出來,因為是包含的關系,所以需要用contains關鍵字


我們需要這樣寫

xpath代碼

  1. //div[contains(@class,"article")] 

 

但是會發現,這定位的太多了,并不是每個段子的div,所以我們要多包含幾個,這樣,就是每個段子的div了

  1. //div[contains(@class,"article"and contains(@class,"block")] 

 

上述已經成功定位了一個個的段子,下面在此基礎上,定位到每個段子下的a標簽

根據審查元素,發現每個段子下class="contentHerf"的a標簽,就是每個段子的詳情頁


詳情頁,要定位的a標簽的href確實是詳情頁的url


xpath代碼

  1. //div[contains(@class,"article"and contains(@class,"block")]//a[@class="contentHerf"

 

這樣,我們就定位了一個個a標簽,只至少在控制臺操作是沒問題的,那么,我們使用Python代碼操作一下吧


代碼

  1. def parse(self, response): 
  2.     a_href_list = response.xpath('//div[contains(@class,"article") and contains(@class,"block")]//a[@class="contentHerf"]/@href' 
  3.     ).extract() 
  4.     print(a_href_list) 

啟動蜘蛛命令

  1. scrapy crawl <爬蟲名> [--nolog] 

注:--nolog參數不加表示一系列日志,一般用于調試,加此參數表示只輸入print內容

示例:啟動段子命令

  1. scrapy crawl duanzi --nolog 

 

成功拿到每一個鏈接。

獲取詳情頁內容

在上述,我們成功的獲取到了每個段子的鏈接,但是會發現有的段子是不全的,需要進入進入詳情頁才能看到所以段子內容,那我們就使用爬蟲來操作一下吧。

我們定義一下標題和內容。

 

根據元素審查,標題的定位xpath是:

  1. //h1[@class="article-title"

 

內容的xpath是:

  1. //div[@class="content"

 

確定標題和內容的xpath定位之后,我們在python代碼中實現一下。

:但是先解決一個問題,詳情頁屬于第二次調用了,所以我們也需要進行調用第二次,再編寫代碼


代碼

  1. # 詳情頁 
  2. def detail(self, response): 
  3.     title = response.xpath('//h1[@class="article-title"]/text()').extract() 
  4.     content = response.xpath('//div[@class="content"]//text()').extract() 
  5.     print("標題:" ) 
  6.     print(title) 
  7.     print("內容"
  8.     print(content) 
  9.  
  10. def parse(self, response): 
  11.     a_href_list = response.xpath( 
  12.         '//div[contains(@class,"article") and contains(@class,"block")]//a[@class="contentHerf"]/@href' 
  13.     ).extract() 
  14.     print(a_href_list) 
  15.     base_url = "https://www.qiushibaike.com" 
  16.     for a_href in a_href_list: 
  17.         url = f"{base_url}{a_href}" 
  18.         yield scrapy.Request(url=url, callback=self.detail) 

結果


但是會發現啊,似乎每個都是列表形式,這似乎不太行吶,我們稍微修改一下代碼,這樣我們拿到的就是正常的文本了,如下圖所示:


上述命令總結

創建爬蟲項目

  1. scrapy startproject <項目名稱> 

創建蜘蛛

  1. scrapy genspider <蜘蛛名稱> <網頁的起始url> 

啟動爬蟲,--nolog參數不加表示一系列日志,一般用于調試,加此參數表示只輸入print內容

  1. scrapy crawl <爬蟲名> [--nolog] 

結尾

經過入門級的操作,我相信你大概知道scrapy是怎么玩了。但是你依然可能懵逼,不懂本質,不過先走起來,才是根本,后續慢慢聽我繼續。

用微笑告訴別人,今天的我比昨天強,今后也一樣。

 

責任編輯:姜華 來源: Python爬蟲與數據挖掘
相關推薦

2017-05-04 21:15:30

Android分辨率

2012-02-24 10:48:56

語盒開源

2021-05-20 07:56:35

Bean容器Spring

2023-10-07 08:59:02

2022-07-04 23:24:28

sql優化監控

2018-08-08 11:40:24

ScrapyRequest網絡爬蟲

2014-06-06 13:42:26

iOS 8QR CodeWWDC2014

2012-05-03 10:24:02

ApacheMINAJava

2023-04-20 17:41:38

開源清華

2017-05-15 21:00:15

大數據Scrapy爬蟲框架

2021-03-08 08:21:19

詞云數據可視化大數據

2010-03-05 17:25:07

sharepoint

2020-12-07 11:23:32

Scrapy爬蟲Python

2017-09-16 17:45:32

數據采集Scrapy爬蟲

2021-04-12 07:36:15

Scrapy爬蟲框架

2021-11-09 09:46:09

ScrapyPython爬蟲

2021-11-08 14:38:50

框架Scrapy 爬蟲

2011-11-30 16:02:13

筆記本評測

2021-05-18 13:25:28

feapder爬蟲Python
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 青青草精品 | 成人网在线 | 羞羞视频免费在线观看 | 国产高清一区二区三区 | 国产成人99久久亚洲综合精品 | 国产成人一区二 | 国产精品久久久久久久7777 | 日韩午夜网站 | 亚洲在线一区二区 | 99资源| 国产精品久久久久久久久久久久 | www.亚洲精品 | 国产精品不卡视频 | 国内精品在线视频 | 国产精品一二三区在线观看 | av网址在线播放 | 91精品入口蜜桃 | 精品一区二区av | 精品久久久久久久久久久院品网 | 伊人免费在线观看高清 | 少妇久久久久 | 91资源在线观看 | 亚洲一区亚洲二区 | 国产乱码精品一区二区三区五月婷 | 毛片免费观看 | 精品国产欧美一区二区三区成人 | 亚洲永久 | 国产精品一区二区三区在线 | 日韩一级免费电影 | 日韩国产精品一区二区三区 | 在线免费观看黄色网址 | 日韩高清中文字幕 | 综合色播 | www天天操| 国产乡下妇女做爰 | 国产成人久久av免费高清密臂 | 国产精品久久一区 | 久久在线 | 精品视频在线免费观看 | 中文字幕动漫成人 | 午夜在线影院 |