資料爬取的概念和分類

2021-10-10 10:10:04 字數 2638 閱讀 9740

在爬蟲爬取到資料中有很多不同型別的資料, 根據資料的不同型別有規律的提取和解析資料

#請求json資料

json_str = r.content.decode(

)# 轉化為python的物件

python_dict = json.loads(json_str)

# 逆操作(將python字典轉化為json格式)

# json_str = json.dumps(python_dict)

jsonpath 可以快速解析json資料

安裝模組:

$根節點

@現行節點

/子節點

不管位置, 匹配符合的條件

# 1. 提取第1本書的title

print

("\n1. 提取第1本書的title"

)ret = jsonpath.jsonpath(info,

"$.store.book[0].title"

)ret = jsonpath.jsonpath(info,

"$['store']['book'][0]['title']"

)# 2. 提取2、3、4本書的標題

print

("\n2. 提取2、3、4本書的標題"

)ret = jsonpath.jsonpath(info,

"$.store.book[1,2,3].title"

)

/從根節點擊取, 或者用來過渡

//從當前節點擊擇文件中的節點, 不考慮位置

@選取屬性

text()選取文字

href()選擇鏈結

# 使用etree.html 將字串轉為element物件

html = etree.html(text)

href_list = html.xpath(

"//li[@class='item-1']/a/@href"

)title_list = html.xpath(

"//li[@class='item-1']/a/text()"

)# 組裝成字典

安裝模組:

示例: 根據標籤查詢

from bs4 import beautifulsoup

html =

''''''

# 建立 beautiful soup 物件

soup = beautifulsoup(html, features=

"lxml"

)# 找所有b標籤 返回列表

ret = soup_all(

'a')

# 可以搜尋屬性 (類class特殊一點)

ret = soup.find_all(**)

ret = soup.find_all(id=

'link2'

)# 搜尋內容

ret= soup.find_all(text=

'elsie'

)

示例:根據css選擇器查詢

ret = select(

'title'

)#標籤直接寫

ret = select(

'.sister'

)#類名前面加.

ret = select(

'#link1'

)#id前面加#

ret = select(

'p #link1'

)# 層級選擇

ret = select(

'a[clas="sister"]'

)# 屬性選擇

ret = select(

'title')[

0].get_text(

)# 獲取文字內容

ret = select(

'a')[0

].get(

'href'

)# 獲取屬性值

Scrapy Mongodb爬取資料

scrapy爬蟲資料存到mongodb中 其實主要是前兩步 1 在settings.py中進行配置 item pipelines mongodb host 127.0.0.1 mongodb port 27017 mongodb dbname spider1 mongodb docname book...

Python資料爬取

二.scrapy爬蟲框架 資料 網路資料採集模型 第三方庫實現爬取 pyspider爬蟲框架 scrapy爬蟲框架 安裝scrapy 配置scrapy環境變數 建立scrapy專案的命令 建立spider 使用python指令碼執行命令列啟動爬蟲 from scrapy.cmdline import...

爬取動態載入的資料

下面展示一些 要請求到每一家企業的id,對應的header裡 import requests url 首頁的url data headers fp open company detail.txt w encoding utf 8 該json 的返回值中就有每家企業的id值 data dic requ...