其實(shí)很早之前就知道爬蟲了慢哈,只是職業(yè)無關(guān),也沒怎么去注意永票。知道前段時間知道這個很火卵贱,可以用來賺錢滥沫,也在一些平臺上發(fā)現(xiàn)有人發(fā)布信息,叫人寫爬蟲爬某個網(wǎng)站的數(shù)據(jù)艰赞,10億+的數(shù)據(jù)佣谐,開價3-5W。雖然說是僧多肉少方妖。但這多一門技能狭魂,多一份收入還是比較可觀的。更有人靠爬蟲月入3W党觅。雌澄。。不知道真假杯瞻,如果是真镐牺,應(yīng)該也是經(jīng)營漫長時間了。畢竟技術(shù)不是難題魁莉,客戶睬涧,推廣才是難題。
今天也終于去看看一些爬蟲入門的東西旗唁。
說實(shí)話畦浓,這些入門教程看了之后實(shí)在是沒啥難度〖煲撸基本上就是requests讶请,re,io,的操作屎媳。但尷尬的是一如既往地抄別人的東西都報(bào)錯夺溢。小單元測試沒錯,放到整個程序里面就報(bào)錯烛谊。风响。〉べ鳎看著也沒啥錯状勤,但弄了很久,這就是偷懶的結(jié)果--原本只是想體驗(yàn)一下而已湃崩。后面就自己修改了部分代碼荧降。主要是他對返回結(jié)果和保存圖片寫得不大好接箫,寫了一大堆攒读。。辛友。
入門還是簡單的薄扁,還是需要深入學(xué)習(xí)剪返。當(dāng)量起來的時候,就是經(jīng)驗(yàn)積累的時候邓梅,就是真正學(xué)到東西的時候脱盲!
下面是我寫的一個簡單例子。從例子可以看出日缨,基本就是python的基礎(chǔ)應(yīng)用嘛钱反。。匣距。沒啥難度面哥。
運(yùn)行過,沒問題毅待。但這里的文章格式問題尚卫,代碼復(fù)制到編輯器上需要格式化,否則報(bào)錯尸红。
(PS:如果你對爬蟲有興趣吱涉,看代碼覺得難,可以關(guān)注我外里,我在持續(xù)寫python教程)
import requests#需要安裝requests
from bs4import BeautifulSoup#需要安裝bs4
import os# 導(dǎo)入os模塊
from ioimport BytesIO
from PILimport Image#需要安裝pillow
import re
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)#禁用安全警告
def mkdir(path):##這個函數(shù)創(chuàng)建文件夾
? ? path = path.strip()
isExists = os.path.exists(path)
if not isExists:
print('創(chuàng)建名字叫做', path, '的文件夾')
os.makedirs(path)
print('創(chuàng)建成功怎爵!')
else:
print(path, '文件夾已經(jīng)存在了,不再創(chuàng)建')
print('開始網(wǎng)頁get請求')
print('開始創(chuàng)建文件夾')
folder_path ='i:\BeautifulPicture'
mkdir(folder_path)# 創(chuàng)建文件夾
print('開始切換文件夾')
os.chdir(folder_path)# 切換路徑至上面創(chuàng)建的文件夾
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'}#給請求指定一個請求頭來模擬chrome瀏覽器
web_url ='https://www.quanjing.com/'
p =r"(https:\S{1,}.jpg)"
pattern = re.compile(p)
r = requests.get(web_url, headers=headers)#像目標(biāo)url地址發(fā)送get請求级乐,返回一個response對象
all_a = BeautifulSoup(r.text, 'lxml').find_all('img')#獲取網(wǎng)頁中的class為item的所有a標(biāo)簽
tar = re.findall(pattern, str(all_a))#返回列表
for ain tar:
pn = os.path.split(a)[1]
try:
resp = requests.get(a, verify=False)#verify用于解決https 提示sslerror問題
? ? ? ? with open(pn, 'ab')as fp:
fp.write(resp.content)
print(pn, '圖片保存成功疙咸!')
#以下方法也行
? ? ? ? # im = Image.open(BytesIO(resp.content))
# im.save(os.path.join(folder_path, pn))
? ? except ConnectionError as e:
print(e)
print("保存圖片失敗")