天天看點

利用python抓取網頁圖檔

▎下圖感受下:

<a href="https://s5.51cto.com/wyfs02/M00/05/B5/wKiom1mqK53QvjMZAAEguKiuqIc274.png-wh_500x0-wm_3-wmp_4-s_3941529878.png" target="_blank"></a>

    突然想起上次華為雲大會送了台雲伺服器,一直被我用來做linux實驗機。于是,突發奇想,利用python下載下傳圖檔,然後利用工具傳遞到本地閱讀,權當練手了。

▎網頁代碼樣例:

<a href="https://s3.51cto.com/wyfs02/M02/05/B5/wKiom1mqMJfBxWHdAAQD_irs6zw538.png-wh_500x0-wm_3-wmp_4-s_1325438776.png" target="_blank"></a>

檢視網頁源代碼,可以找到圖檔所在的網址,加上網站字首就是真正的圖檔目标位址。

在linux系統中,直接wget就能下載下傳這些圖檔,驗證圖檔位址的真實性。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<code>[root@plinuxos tmp]</code><code># wget http://support.huawei.com/huaweiconnect/data/attachment/forum/201705/03/20170503211729148001.png</code>

<code>--2017-09-02 12:48:40--  http:</code><code>//support</code><code>.huawei.com</code><code>/huaweiconnect/data/attachment/forum/201705/03/20170503211729148001</code><code>.png</code>

<code>Resolving support.huawei.com (support.huawei.com)... 221.193.246.61, 121.18.169.18, 101.28.252.205</code>

<code>Connecting to support.huawei.com (support.huawei.com)|221.193.246.61|:80... connected.</code>

<code>HTTP request sent, awaiting response... 200 OK</code>

<code>Length: 495335 (484K) [image</code><code>/png</code><code>]</code>

<code>Saving to: ‘20170503211729148001.png’</code>

<code>100%[=============================================================&gt;] 495,335     1.98MB</code><code>/s</code>   <code>in</code> <code>0.2s   </code>

<code>2017-09-02 12:48:41 (1.98 MB</code><code>/s</code><code>) - ‘20170503211729148001.png’ saved [495335</code><code>/495335</code><code>]</code>

<code>[root@plinuxos tmp]</code><code># ls</code>

<code>20170503211729148001.png  downpic.py       mysql.sock  </code><code>test</code><code>.py   zrlog.sql</code>

<code>db01.sql                  hsperfdata_root  mysql.sql   </code><code>test</code><code>.sql</code>

▎抓取代碼:

16

17

<code>#/usr/bin/env python                                  </code>

<code>import</code> <code>requests,bs4,time</code>

<code>headers</code><code>=</code><code>{</code><code>'User-Agent'</code><code>: </code><code>'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0'</code><code>}</code>

<code>url</code><code>=</code><code>'http://support.huawei.com/huaweiconnect/enterprise/thread-400343.html'</code>

<code>urlhtml</code><code>=</code><code>requests.get(url,headers</code><code>=</code><code>headers)</code>

<code>urlhtml.raise_for_status()</code>

<code>pichtml</code><code>=</code><code>bs4.BeautifulSoup(urlhtml.text[:],</code><code>'html.parser'</code><code>)</code>

<code>piclink</code><code>=</code><code>pichtml.select(</code><code>'p span img[src]'</code><code>)</code>

<code>if</code> <code>__name__</code><code>=</code><code>=</code><code>'__main__'</code><code>:</code>

<code>    </code><code>piclist</code><code>=</code><code>[]</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>len</code><code>(piclink)):</code>

<code>        </code><code>picdic</code><code>=</code><code>piclink[i].attrs</code>

<code>        </code><code>newpicdic</code><code>=</code><code>'http://support.huawei.com'</code><code>+</code><code>picdic[</code><code>'src'</code><code>]</code>

<code>        </code><code>newpic</code><code>=</code><code>requests.get(newpicdic)</code>

<code>        </code><code>picname</code><code>=</code><code>str</code><code>(time.strftime(</code><code>"%Y%m%d00"</code><code>,time.localtime(time.time())))</code><code>+</code><code>str</code><code>(i)</code><code>+</code><code>'.png'</code>

<code>        </code><code>with </code><code>open</code><code>(picname,</code><code>'wb'</code><code>) as </code><code>file</code><code>:</code>

<code>            </code><code>file</code><code>.write(newpic.content)</code>

▎執行腳本:

<code>[root@plinuxos tmp]</code><code># python3 downpic.py </code>

<code>[root@plinuxos tmp]</code><code># ls -lhrt *.png</code>

<code>-rw-r--r--. 1 root root 484K Sep  2 12:50 20170902000.png</code>

<code>-rw-r--r--. 1 root root 241K Sep  2 12:50 20170902001.png</code>

<code>-rw-r--r--. 1 root root 542K Sep  2 12:50 20170902002.png</code>

<code>-rw-r--r--. 1 root root 607K Sep  2 12:50 20170902003.png</code>

<code>-rw-r--r--. 1 root root 500K Sep  2 12:50 20170902004.png</code>

<code>-rw-r--r--. 1 root root 146K Sep  2 12:50 20170902005.png</code>

<code>-rw-r--r--. 1 root root 381K Sep  2 12:50 20170902006.png</code>

<code>-rw-r--r--. 1 root root 463K Sep  2 12:51 20170902007.png</code>

可以看到,圖檔已經下載下傳到了linux系統中,然後通過遠端軟體傳輸到本地檢視。

▎效果如下:

<a href="https://s1.51cto.com/wyfs02/M01/A4/66/wKioL1mqLerDAu2MAALxrs1zQbE602.png-wh_500x0-wm_3-wmp_4-s_2051928618.png" target="_blank"></a>

好了,練手完,接下來,部落客就可以安心的打磨網絡知識了。。。

本文轉自Grodd51CTO部落格,原文連結:http://blog.51cto.com/juispan/1962116,如需轉載請自行聯系原作者