Python 网络爬虫笔记4 -- 信息标记与提取
生活随笔
收集整理的這篇文章主要介紹了
Python 网络爬虫笔记4 -- 信息标记与提取
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Python 網(wǎng)絡(luò)爬蟲(chóng)筆記4 – 信息標(biāo)記與提取
Python 網(wǎng)絡(luò)爬蟲(chóng)系列筆記是筆者在學(xué)習(xí)嵩天老師的《Python網(wǎng)絡(luò)爬蟲(chóng)與信息提取》課程及筆者實(shí)踐網(wǎng)絡(luò)爬蟲(chóng)的筆記。
課程鏈接:Python網(wǎng)絡(luò)爬蟲(chóng)與信息提取
參考文檔:
Requests 官方文檔(英文)
Requests 官方文檔(中文)
Beautiful Soup 官方文檔
re 官方文檔
Scrapy 官方文檔(英文)
Scrapy 官方文檔(中文)
一、信息標(biāo)記
1、XML:標(biāo)簽
- 標(biāo)簽格式:< name> … < /name>
- 空標(biāo)簽:< name />
- 注釋:<!‐‐ ‐‐>
2、JSON:有類型的鍵值對(duì)key:value
- 鍵值對(duì)單個(gè)值:“key” : “value”
- 鍵值對(duì)多個(gè)值:“key” : [“value1”, “value2”]
- 嵌套鍵值對(duì):“key” : {“subkey” : “subvalue”}
3、YAML:無(wú)類型鍵值對(duì)key:value
- 鍵值對(duì)單個(gè)值:key : value
- 鍵值對(duì)多個(gè)值:
key : #Comment
‐value1
‐value2 - 嵌套鍵值對(duì):
key :
subkey : subvalue
二、信息提取
1、信息提取一般方法
形式解析: 完整解析信息的標(biāo)記形式,再提取關(guān)鍵信息
優(yōu)點(diǎn):信息解析準(zhǔn)確
缺點(diǎn):提取過(guò)程繁瑣,速度慢
搜索: 無(wú)視標(biāo)記形式,直接搜索關(guān)鍵信息
優(yōu)點(diǎn):提取過(guò)程簡(jiǎn)潔,速度較快
缺點(diǎn):提取結(jié)果準(zhǔn)確性與信息內(nèi)容相關(guān)
融合方法: 結(jié)合形式解析與搜索方法,提取關(guān)鍵信息
2、基礎(chǔ)查找方法:find_all
函數(shù)原型:
find_all(name, attrs, recursive, string, **kwargs)參數(shù):
- name:要檢索標(biāo)簽的名稱字符串
- attrs:要檢索標(biāo)簽屬性值的字符串,可標(biāo)注屬性檢索
- recursive:是否對(duì)子孫全部檢索,默認(rèn)True
- string:<>…</>中字符串區(qū)域的檢索字符串
- **kwargs:可選參數(shù)
返回: 檢索結(jié)果的列表
實(shí)例:
import requests from bs4 import BeautifulSoupdef html_search():"""檢索 HTML 內(nèi)容,提取信息:return:"""html = requests.get('https://python123.io/ws/demo.html')soup = BeautifulSoup(html.text, 'html.parser')# 檢索標(biāo)簽print(soup.find_all('a'))print(soup.find_all(['a', 'b']))# 檢索標(biāo)簽屬性print(soup.find_all('p', 'course'))print(soup.find_all(id='link1'))# 檢索字符串print(soup.find_all(string='python'))if __name__ == '__main__':print('running bs:')html_search()簡(jiǎn)寫:
- < tag>(…) 等價(jià)于 < tag>.find_all(…)
- soup(…) 等價(jià)于 soup.find_all(…)
3、其它查找方法
| <>.find() | 搜索且只返回一個(gè)結(jié)果,同.find_all()參數(shù) |
| <>.find_parents() | 在先輩節(jié)點(diǎn)中搜索,返回列表類型,同.find_all()參數(shù) |
| <>.find_parent() | 在先輩節(jié)點(diǎn)中返回一個(gè)結(jié)果,同.find()參數(shù) |
| <>.find_next_siblings() | 在后續(xù)平行節(jié)點(diǎn)中搜索,返回列表類型,同.find_all()參數(shù) |
| <>.find_next_sibling() | 在后續(xù)平行節(jié)點(diǎn)中返回一個(gè)結(jié)果,同.find()參數(shù) |
| <>.find_previous_siblings() | 在前序平行節(jié)點(diǎn)中搜索,返回列表類型,同.find_all()參數(shù) |
| <>.find_previous_sibling() | 在前序平行節(jié)點(diǎn)中返回一個(gè)結(jié)果,同.find()參數(shù) |
總結(jié)
以上是生活随笔為你收集整理的Python 网络爬虫笔记4 -- 信息标记与提取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基本类型与字符串的相互转换
- 下一篇: Python 网络爬虫笔记5 -- Be