scrapy爬蟲實戰 抓取NBA吧的內容

2021-10-08 00:26:02 字數 3285 閱讀 7133

6 debug

7 資料存入資料庫

進入之前以及搭建好的虛擬環境:

在anaconda的shell中輸入下面格式(scrapy shell 要爬取的**):

進入貼吧頁面的開發者模式(在瀏覽器上按f12),分析標籤:

再次進入shell檢視需要的資料,同時觀察資料特徵:

:# 頁面中帖子的url位址

url_list = response.css(

'.j_th_tit::attr(href)'

).extract(

)# 迴圈遍歷處理

for url in url_list:

print

(url)

# 下面總是可以形成乙個完整的**格式(網域名稱 + 路徑)

yield scrapy.request(url=parse.urljoin(response.url, url)

, callback=self.parse_detail)

next_url = response.css(

'.next.pagination-item::attr(href)'

).extract()[

0]if next_url:

yield scrapy.request(url=parse.urljoin(response.url, next_url)

, callback=self.parse)

defparse_detail

(self, response)

:# 此處設定斷點,檢視到了第乙個帖子:置頂帖,利用最後的href可以驗證之

# 拿到帖子的標題

# 先提一下利用css提取的格式:(.class名字1.class名字2.class名字n::提取標籤中的文字).從標籤格式中剝離出去

title = response.css(

'.core_title_txt.pull-left.text-overflow::text'

).extract(

)# 拿到作者的列表

author = response.css(

'.p_author_name.j_user_card::text'

).extract(

)# 拿到帖子的內容(如果用::text會把給過濾掉;裡面有雜質,需要進一步處理)

contents_list = response.css(

'.d_post_content.j_d_post_content'

).extract(

)# 進步一步處理 帖子的內容,包含 位址,以及 前端的換行標籤

contents_list = self.get_content(contents_list)

# 處理帖子傳送的時間和帖子位於樓數(裡面有雜質,需要進一步處理)

bbs_sendtime_list, bbs_floor_list = self.get_send_time_and_floor(response)

print()

# 這裡設定乙個斷點進行debug

# pass

defget_content

(self, contents)

: contents_list =

for content in contents:

reg =

";\">(.*)

" result = re.findall(reg, content)[0

]# 返回值也是乙個陣列

return contents_list

# 提取發帖時間和樓數的方法

defget_send_time_and_floor

(self, response)

:# 總體思路就是乙個分析 和 提取資料的過程

# 屬性中為 該class名(post-tail-wrap)的標籤 中的span標籤中 的文字,其中span標籤的class名又為:tail-info

bbs_send_time_and_floor_list = response.css(

'.post-tail-wrap span[class=tail-info]::text'

).extract(

) i =

0# 記錄 bbs_send_time_and_floor_list 校表的位置,0是「來自」,1是樓數,2是發帖時間

bbs_sendtime_list =

bbs_floor_list =

for bbs_send_time_and_floor in bbs_send_time_and_floor_list:

# 老師先是把"來自"過濾掉了,也行!

""" for lz in bbs_send_time_and_floor_list:

if lz == '來自':

bbs_send_time_and_floor_list.remove(lz)

"""# 我這裡採用排除"來自"的方法是: 根據資料的特徵來提取之. 上面的是老師的方法.

if bbs_send_time_and_floor[-1

]=='樓':

# 這種情況存的是樓數

if':'

in bbs_send_time_and_floor:

# 這種情況存的是發帖時間

爬蟲實戰scrapy

coding utf 8 import scrapy import re class jobbolespider scrapy.spider name jobbole allowed domains blog.jobbole.com start urls defparse self,response...

Scrapy爬蟲抓取ZOL手機詳情

前不久需要一批手機資料做測試,所以就爬取了zol上關於手機的各項引數,現在把 分享出來,希望大家能夠多提改進意見。想要抓取zol關於手機的資訊需要三個步驟 手機 列表頁 單個手機詳情頁 當前手機更多詳情頁面 coding gbk from scrapy.spiders import crawlspi...

Python爬蟲框架 scrapy抓取40W部落格

單純的從每個欄目去爬取是不顯示的,轉換一下思路,看到搜尋頁面,有時間 有時間!注意看url鏈結 頁面搜尋的時候因為加了驗證,所以你必須要獲取到你本地的cookie,這個你很容易得到 字典生成器的語法是時候去複習一下了 import scrapy from scrapy import request,...