天天看點

使用BeautifulSoup輕松擷取url及其内容

1、環境:系統Win7 x64,Python 2.7。

2、示例代碼:

<code>#encoding: utf-8</code>

<code>#author: walker</code>

<code>#date: 2014-11-26</code>

<code>#summary: 使用BeautifulSoup擷取url及其内容</code>

<code>import</code> <code>sys, re, requests, urllib</code>

<code>from</code> <code>bs4 </code><code>import</code> <code>BeautifulSoup</code>

<code>reload</code><code>(sys)   </code>

<code>sys.setdefaultencoding(</code><code>'utf8'</code><code>)  </code>

<code>#給定關鍵詞,擷取百度搜尋的結果   </code>

<code>def</code> <code>GetList(keyword):</code>

<code>    </code><code>keyword </code><code>=</code> <code>unicode</code><code>(keyword, </code><code>'gb18030'</code><code>)</code>

<code>    </code><code>dic </code><code>=</code> <code>{</code><code>'wd'</code><code>: keyword}</code>

<code>    </code><code>urlwd </code><code>=</code> <code>urllib.urlencode(dic)</code>

<code>    </code><code>print</code><code>(urlwd)</code>

<code>    </code><code>sn </code><code>=</code> <code>requests.Session()</code>

<code>    </code><code>url </code><code>=</code> <code>'http://www.baidu.com/s?ie=utf-8&amp;csq=1&amp;pstg=22&amp;mod=2&amp;isbd=1&amp;cqid=9c0f47b700036f17&amp;istc=8560&amp;ver=0ApvSgUI_ODaje7cp4DVye9X2LZqWiCPEIS&amp;chk=54753dd5&amp;isid=BD651248E4C31919&amp;'</code>

<code>    </code><code>url </code><code>+</code><code>=</code> <code>urlwd</code>

<code>    </code><code>url </code><code>+</code><code>=</code> <code>'&amp;ie=utf-8&amp;f=8&amp;rsv_bp=1&amp;rsv_idx=1&amp;tn=baidu&amp;rsv_pq=b05765d70003b6c0&amp;rsv_t=ce54Z5LOdER%2Fagxs%2FORKVsCT6cE0zvMTaYpqpgprhExMhsqDACiVefXOze4&amp;_ck=145469.1.129.57.22.735.37'</code>

<code>    </code><code>r </code><code>=</code> <code>sn.get(url</code><code>=</code><code>url)</code>

<code>    </code><code>soup </code><code>=</code> <code>BeautifulSoup(r.content)       </code><code>#r.text很可能中文亂碼</code>

<code>    </code><code>rtn </code><code>=</code> <code>soup.find(</code><code>'div'</code><code>,</code><code>id</code><code>=</code><code>'content_left'</code><code>).find_all(name</code><code>=</code><code>'a'</code><code>,href</code><code>=</code><code>re.</code><code>compile</code><code>(</code><code>'baidu.com'</code><code>))</code>

<code>    </code><code>for</code> <code>item </code><code>in</code> <code>rtn:</code>

<code>        </code><code>print</code><code>(item.getText().encode(</code><code>'gb18030'</code><code>))</code>

<code>        </code><code>print</code><code>(item[</code><code>'href'</code><code>])</code>

<code>        </code> 

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

<code>    </code><code>keyword </code><code>=</code> <code>'正規表達式'</code>

<code>    </code><code>GetList(keyword)</code>

3、運作結果截圖:

<a href="http://s3.51cto.com/wyfs02/M01/53/FB/wKiom1R1R6qwvklLAAX4LcZ3AkI940.jpg" target="_blank"></a>

相關閱讀:

本文轉自walker snapshot部落格51CTO部落格,原文連結http://blog.51cto.com/walkerqt/1582703如需轉載請自行聯系原作者

RQSLT