python爬蟲—— 抓取今日頭條的街拍的妹子圖


AJAX 是一種用於創建快速動態網頁的技術。 通過在后台與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。 

近期在學習獲取js動態加載網頁的爬蟲,決定通過實例加深理解。

1、首先是url的研究(谷歌瀏覽器的審查功能)

http://www.toutiao.com/search_content/?offset=0&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&cur_tab=1

對應用get方法到url上獲取信息。網頁對應offset=0 、keyword=%E8%A1%97%E6%8B%8D  是會變的。如果要批量爬取,就得設置循環。

當網頁下拉,offset會20、40、60的變化,其實就是每次加載20個內容。

2、

通過requests獲得response,進行json解析。

還是一樣的網頁,切換到Preview,可以看到json的數據內容。title在['date'][0]['title']下,其他類似。

import json
import requests,os
def download_pic(file,name,html):
    r = requests.get(html)
    filename=os.path.join(file,name+'.jpg')
    with open(filename,'wb') as f:
        f.write(r.content)
        
url = 'http://www.toutiao.com/search_content/?offset=0&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&cur_tab=1'

res = requests.get(url)
json_data = json.loads(res.text)
data = json_data['data']
for i in data:
    print i['title']
    file_path = os.getcwd()+'\image'
    print file_path
    for p in i['image_detail']:
        print p['url']
        name = p['url'].split('/')[-1]
        download_pic(file_path,name,p['url'])

   

在當前目錄新建image文件夾,然后爬蟲下載圖片。

圖片名截取url鏈接的后面部分31e30003d4be75c719ae.jpg

例如http://p3.pstatp.com/large/31e30003d4be75c719ae

 

 

結果如下:(僅供學習交流)

循環什么的沒寫只爬取前20個鏈接的圖片。

 

 

 

--------------------------------------------------------------------------------------------------------------

http://jandan.net/ooxx——煎蛋網

同樣是妹子圖,有些網頁不涉及json動態加載的就比較簡單了,用beautifulsoup即可

貼上代碼匿了

import requests,os,time
from bs4 import BeautifulSoup
def download_pic(file,name,html):
    r = requests.get(html)
    filename=os.path.join(file,name+'.jpg')
    with open(filename,'wb') as f:
        f.write(r.content)
        

def get_url(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.text,'lxml')
    data = soup.select(' div.text > p > img')
    print data
    for i in data:
        s = i.attrs['src'][2:]
        print s
        file_path = os.getcwd()+'\imgage1'
        print file_path
        name = i.attrs['src'].split('/')[-1]
        download_pic(file_path,name,'http://'+s)

 
for i in reversed(range(236)):
    url = 'http://jandan.net/ooxx/page-'+str(i)+'#comments'  
    if requests.get(url).status_code == 200:
        get_url(url)
    time.sleep(5)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM