接下來會(huì)依次準(zhǔn)備三個(gè)案例(如果要把每一個(gè)點(diǎn)都精通的話大約要花費(fèi)一個(gè)月,我說的精通是指自己將代碼不用查資料寫出來,以下暫未整理):
import requests,threading#多線程處理與控制
from lxml import etree
from bs4 import BeautifulSoup
#獲取源碼
def get_html(url):
url='http://www.doutula.com/?qqdrsign=01495'
#獲取網(wǎng)絡(luò)地址,但這個(gè)地方寫死了,怎么辦呢,因?yàn)槲覀冞€沒有做多頁
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'}
#上一步是模擬瀏覽器信息,固定格式,可記下來
request=requests.get(url=url,headers=headers)#對(duì)網(wǎng)址發(fā)送一個(gè)get請(qǐng)求
response=request.content#獲取源碼,比test稍微好一點(diǎn)
#print(response)
return response
#接下來是獲取外頁,即圖片自身的源碼
def get_img_html(html):
soup=BeautifulSoup(html,'lxml')#解析網(wǎng)頁方式,自帶html.pparser
all_a=soup.findall('a',class='list-group-item randomlist')#class是關(guān)鍵字所以此處加
for i in all_a:
print(i)#i是指<a class="list-group-item random_list" href="http://www.doutula.com/article/detail/6001799">
img_html=get_html(i['href'])#是用來獲取超鏈接這一部分源碼
print(img_html)
#http://www.doutula.com/article/list/?page=2
a=get_html(1)
get_img_html(a)
好了,我們已經(jīng)可以獲取一部分的源碼了,這樣,我們接下來的工作是開始做多頁
遂川網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,遂川網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為遂川數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的遂川做網(wǎng)站的公司定做!
import requests,threading#多線程處理與控制
from lxml import etree
from bs4 import BeautifulSoup
#獲取源碼
def get_html(url):
#url='http://www.doutula.com/?qqdrsign=01495'#獲取網(wǎng)絡(luò)地址,但這個(gè)地方寫死了,怎么辦呢,因?yàn)槲覀冞€沒有做多頁
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'}
#上一步是模擬瀏覽器信息,固定格式,可記下來
request=requests.get(url=url,headers=headers)#對(duì)網(wǎng)址發(fā)送一個(gè)get請(qǐng)求
response=request.content#獲取源碼,比test稍微好一點(diǎn)
#print(response)
return response
#接下來是獲取外頁,即圖片自身的源碼
def get_img_html(html):
soup=BeautifulSoup(html,'lxml')#解析網(wǎng)頁方式,自帶html.pparser
all_a=soup.findall('a',class='list-group-item randomlist')#class是關(guān)鍵字所以此處加
for i in all_a:
print(i)#i是指<a class="list-group-item random_list" href="http://www.doutula.com/article/detail/6001799">
img_html=get_html(i['href'])#是用來獲取超鏈接這一部分源碼
print(img_html)
#http://www.doutula.com/article/list/?page=2
def main():
start_url='http://www.doutula.com/article/list/?page='
for i in range(1,10):
start_html=get_html(start_url.format(i))#將前十頁的頁數(shù)傳遞進(jìn)來,來獲取前十頁源碼
get_img_html(start_html)#來獲取圖片所在的鏈接源碼
main()
最后是總的源碼:
import requests,threading#多線程處理與控制
from lxml import etree#解析方式,直接找到里面的內(nèi)容
from bs4 import BeautifulSoup
#獲取源碼
def get_html(url):
#url='http://www.doutula.com/?qqdrsign=01495'#獲取網(wǎng)絡(luò)地址,但這個(gè)地方寫死了,怎么辦呢,因?yàn)槲覀冞€沒有做多頁
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'}
#上一步是模擬瀏覽器信息,固定格式,可記下來
request=requests.get(url=url,headers=headers)#對(duì)網(wǎng)址發(fā)送一個(gè)get請(qǐng)求
response=request.content#獲取源碼,比test稍微好一點(diǎn)
#print(response)
return response
#接下來是獲取外頁,即圖片自身的源碼
def get_img_html(html):
soup=BeautifulSoup(html,'lxml')#解析網(wǎng)頁方式,自帶html.pparser
all_a=soup.findall('a',class='list-group-item randomlist')#class是關(guān)鍵字所以此處加
for i in all_a:
#print(i)#i是指<a class="list-group-item random_list" href="http://www.doutula.com/article/detail/6001799">
img_html=get_html(i['href'])#是用來獲取超鏈接這一部分源碼
get_img(img_html)
#print(img_html)
#http://www.doutula.com/article/list/?page=2
#獲取圖片的url:
def get_img(html):soup=etree.HTML(html)#解析之前的初始化,自動(dòng)修正代碼的
items=soup.xpath('//div[@class="artile_des"]')#@是用來選取屬性,找到相應(yīng)盒子
br/>soup=etree.HTML(html)#解析之前的初始化,自動(dòng)修正代碼的
items=soup.xpath('//div[@class="artile_des"]')#@是用來選取屬性,找到相應(yīng)盒子
br/>imgurl_list=item.xpath('table/tbody/tr/td/a/img/@onerror')#onerror這個(gè)是所需要的屬性,很重要
#print(imgurl_list)
#start_save_img(imgurl_list)
#上處已找到圖片
#接下來是下載by多線程
x=1#設(shè)置命名
#拼接完整鏈接,文件open
def save_img(img_url):
global x #設(shè)置全局變量
x+=1
img_url=img_url.split('=')[-1][1:-2].replace('jp','jpg')
print("正在下載"+'http:'+img_url)
img_content=requests.get(img_url).content
with open('doutu/%s.jpg'% x,'wb') as f:
f.write(img_content)
print('已打印第%s張圖片'%x);
#打造多線程
def start_save_img(imgurl_list):
for i in imgurl_list:
print(i)
th=threading.Thread(target=save_img,args=(i,))
th.start()
def main():
start_url='http://www.doutula.com/article/list/?page='
for i in range(1,10):
start_html=get_html(start_url.format(i))#將前十頁的頁數(shù)傳遞進(jìn)來,來獲取前十頁源碼
get_img_html(start_html)#來獲取圖片所在的鏈接源碼
if name=='main':
main()
未完待續(xù),后期會(huì)有改進(jìn)
新聞標(biāo)題:python爬蟲取圖片詳解,
本文路徑:http://muchs.cn/article44/jsojhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)