爬取表情包

2022-09-19 23:42:13 字數 2723 閱讀 7492

這是我第一次在這寫部落格,還是有點興奮。

我也是剛接觸python不久,發現python**真的很強大,簡單就可以處理複雜的事。最近很想寫個爬蟲,但水平沒達到,正好csdn學院有個公開課,黃勇老師講的《90分鐘掌握python多執行緒爬蟲(全程實戰)》,3月6日晚20:00我聽了直播,當時沒跟上,等看了回播才搞明白(可能我是python2課裡是python3,找理由

o(∩_∩)o哈哈~)。

先上筆記:

爬蟲的流程分析:

1、請求資料:requests庫(這個庫可以很方便的去請求網路資料)

*安裝方法:pip install requests

2、將請求下來的資料解析出來,獲取我們想要的資料,把不想要的資料拋棄掉

*beautifulsoup:pip install bs4

*lxml:pip install lxml

4、無論你的爬蟲是大還是小,都是由這幾個模組組成的。

在此感謝黃勇老師,也不囉嗦了,直接上**。

#

coding:utf-8

import

requests

import

osfrom bs4 import

beautifulsoup

import

urllib

import

threading

#首先要進行身份偽裝

headers =

page_urls=

img_urls=

#glock=threading.lock()

defproducer():

''''''

while

true:

glock.acquire()

#多執行緒對全域性變數操作必須加鎖

if len(page_urls)==0:

glock.release()

#跳出迴圈退出程式前也必須解鎖

break

page_url=page_urls.pop()#

pop函式將列表中最後一項刪除,並返回刪除的項

glock.release()#

操作完成記得解鎖

response = requests.get(page_url, headers)#

獲取網頁資料,返回response

text =response.text

#print text

soup = beautifulsoup(text, '

lxml

')#例項beautifulsoup物件解析資料,使用lxml引擎。當然還可以用其他解析工具,也可用正規表示式,正規表示式比較複雜

img_list = soup.find_all("

img", attrs=)#

根據標籤屬性查詢自己想要的資料,拋棄其它非表情包

for img in

img_list:

img_url = img['

data-original

']#glock.acquire()

glock.release()

defconsumer():

''''''

while

true:

glock.acquire()

if len(img_urls)==0 and len(page_urls)==0:#

剛執行有可能img_urls為空,所以加上page_urls同時為空才是結束條件

glock.release()

break

if len(img_urls)>0:

img_url=img_urls.pop()#

為空時pop出錯

else

: img_url=''

glock.release()

ifimg_url:

filename = img_url.split("

/")[-1]#

將位址分割成列表,取最後一項檔名

fullpath = os.path.join("

images

", filename)#

將images目錄名與檔名合併,由於系統不同,不一定就是加"/"

try:

urllib.urlretrieve(img_url, fullpath)##

except

exception as e:

print

e

print img_url,""#

還時常出現10054錯誤,可能是伺服器發現了爬蟲強行關閉當前鏈結

defmain():

for x in range(1,100):#

爬取1-99頁資料

page_url="

"+str(x)

for x in range(5):#

開啟5個生產者執行緒

th=threading.thread(target=producer)

th.start()

for x in range(5):#

開啟5個消費者執行緒

th =threading.thread(target=consumer)

th.start()

if__name__ == '

__main__

':#如果作為程式則執行,如果作為包載入則不執行

main()

表情包的爬取

import requests from bs4 import beautifulsoup from urllib.request import urlretrieve import os base page url page url list for x in range 1 50 url bas...

python爬蟲 表情包爬取

問題 1.路徑問題以及獲取路徑問題 注 argv 0 只是得到的是當前指令碼的絕對位置 而os模組中的幾種獲得路徑的方法,得到的是當前的工作目錄,如 open 1.txt r 則會在當前工作目錄查詢該檔案。即大部分的檔案操作都是相對於當前工作路徑。若要改變當前工作路徑,可以用 os.chdir pa...

爬蟲 學習爬取表情包

表情包位址 表情位址 1.請求目標 2.匹配不同位址 url def get urls url 1.請求目標 response requests.get url 2.通過正則來匹配不同位址 url 每張共有內容保留,不同的內容用.來匹配 表示匹配任意數量不換行的字元 表示盡可能匹配最短的字元 r u...