import requests from bs4 import BeautifulSoup res = requests.get\ ("http://pic.sogou.com/pics/recommend?category=%C3%C0%C5%AE&from=webvr#%E8%90%9D%E8%8E%89") soup = BeautifulSoup(res.text,'html.parser') print(soup.select('img'))
res變量:存儲鏈接的網頁所有內容
res.text :提取網頁的文本內容
html.parser: 以一定的格式解析網頁內容
soup.select( ):CSS選擇器, 我們使用CSS選擇器來尋找符合要求的數據。找到的數據,返回爲list類型,尋找到的 是所有符合要求的數據
soup.select('img')// css裏img標籤裏的信息
print soup.select('div')// 直接返回div標籤所有的內容
運行結果:
[<img alt="搜狗圖片" src="/news/images/[email protected]" srcset="/news/images/[email protected] 2x"/>, <img class="st-load" src="">
</img>]
結果沒發現圖片的URL。。。
檢查網頁元素,選 Network, XHR , 對應Name, 觀察Headers 和 priview的信息 和規律:
import requests import urllib from bs4 import BeautifulSoup import json def getImgs(length,path): //爬取個數,下載到本地的路徑
imgs = requests.get('http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E7%BE%8E%E5%A5%B3&tag=%E8%90%9D%E8%8E%89&start=15&len=15') jd = json.loads(imgs.text) jd = jd['all_items'] imgs_url = [] for j in jd: imgs_url.append(j['bthumbUrl']) m = 0 for img_url in imgs_url: print( str(m) + '.jpg ' + ' Downloading...') urllib.request.urlretrieve(img_url, path + str(m) + '.jpg') m = m + 1 print('Download complete!')getImgs( 20, 'F:/yang/sougouImgs/')
運行結果:
雖然長度定爲20,但是前面一個頁面只有15張,所以只能下載15張
再返回到網頁檢查部分 發現 start 的規律 15, 30 , 45 ....
更改的待續。。