Pyhton網頁爬蟲抓取學習(一) BeautifulSoup的使用

<table id="table" width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="from_w">
<tbody><tr>
<td width="20%" align="right" class="tdlable">1</td>
<td width="30%" align="left" class="tdvalue">2</td>
<td width="20%" align="right" class="tdlable">1<font color="#FF0000">*</font> </td>
<td width="30%" align="left" class="tdvalue">2&nbsp;</td>
</tr>
<tr class="evenRow">
<td align="right" class="tdlable">2<font color="#FF0000">*</font> </td>
<td class="tdvalue"></td>
<td align="right" class="tdlable">1<font color="#FF0000">*</font> </td>
<td class="tdvalue">1</td>
</tr>
<tr>
<td align="right" class="tdlable">1<font color="#FF0000">*</font> </td>
<td align="left" class="tdvalue">2<input type="button" value="&nbsp;" name="&nbsp;" class="btn_50" disabled="disabled" style="display: none;"> 
</td>
<td align="right" class="tdlable">1<font color="#FF0000">*</font> </td>
<td align="left" class="tdvalue">2</td>
</tr>
<tr class="evenRow">
<td align="right" class="tdlable">1</td>
<td colspan="3" align="left" class="tdvalue">&nbsp;</td>
</tr>
<tr>
<td align="right" class="tdlable">1</td>
<td colspan="3" align="left" class="tdvalue">2</td>
</tr>
<tr>
<td colspan="4" align="right" class="bartop">登記</td>
</tr>
<tr>
<td align="right" class="tdlable">登記日期&nbsp;</td>
<td align="left" class="tdvalue">20191230</td>
<td align="right" class="tdlable">更新日期&nbsp;</td>
<td align="left" class="tdvalue">20191230</td>
</tr>
</tbody></table>
from bs4 import BeautifulSoup
import requests


url='index.html'
html=requests.get(url)
html.encoding='gbk'
soup=BeautifulSoup(html.text,'lxml')

text=soup.select("#table>tbody>tr:nth-of-type(7)>td:nth-of-type(2)")
print(text[0].get_text())

第一段代碼爲需要抓取的html文本 ,我把他命名爲Index.html

爲防止抓取過程的中文亂碼,在Python代碼中添加了 html.encoding='gbk',

本次使用了BeautifulSoup 類庫中的 lxml 選擇器

soup 選擇器 select使用了 css 選擇器 #table>tbody>tr:nth-of-type(7)>td:nth-of-type(2) 這一行的意思是 id爲table下的 tbody下的第7個tr裏面的第二個td


text=soup.select("#table>tbody>tr:nth-of-type(7)>td:nth-of-type(2)")

輸出的結果是  <td align="left" class="tdvalue">20191230</td>

 

爲了直接得到 20191230 需要使用 text[0].get_text() 注意直接使用 text.get_text() 會報錯 可能是版本的問題

 

發佈了10 篇原創文章 · 獲贊 3 · 訪問量 3348
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章