正規表示式拆分
importre#1.拆分字串
one = '
asdsfsgsh'#
標準 是 s 為拆分
pattern = re.compile('s'
)result =pattern.split(one)
#print(result)
#2.匹配中文
two = '
網頁是最新版本的,適配移動端'#
python中 匹配中問 [a-z] unicode的範圍 * + ?
pattern = re.compile('
[\u4e00-\u9fa5]+')
result =pattern.findall(two)
print(result)
importreimport
requests
url = '
'headers =
#response.text 不太準確 轉碼 是靠推測
data = requests.get(url, headers=headers).content.decode()
#正則解析 資料
#每個新聞的titile, url
#民營經濟再吃定心丸,民企當體會怎樣深意
pattern = re.compile('
(.*?)')
#pattern = re.compile('',re.s)
result =pattern.findall(data)
(result)
#with open('02news.html', 'w') as f:
#f.write(data)
xpath解析
importreimport
requests
#安裝支援 解析html和xml的解析庫 lxml
#pip install lxml
from lxml import
etree
url = '
'headers =
#response.text 不太準確 轉碼 是靠推測
data = requests.get(url, headers=headers).content.decode()
#1.轉解析型別
xpath_data =etree.html(data)
#xpath 語法 1. 節點 /
#2. 跨節點: //
#3. 精確的標籤: //a[@屬性="屬性值"]
#4. 標籤包裹的內容 text()
#5. 屬性:@href
#xpath--s資料型別---list
#2呼叫 xpath的方法
result = xpath_data.xpath('
/html/head/title//text()')
result = xpath_data.xpath('
//a/text()')
result = xpath_data.xpath('
//a[@mon="ct=1&a=2&c=top&pn=18"]/text()')
result = xpath_data.xpath('
//a[@mon="ct=1&a=2&c=top&pn=18"]/@href')
result = xpath_data.xpath('
//li/a/text()')
(result)
#with open('02news.html', 'w') as f:
#f.write(data)
注意事項
from lxml importetree
html = """
"""#1.轉型別
x_data =etree.html(html)
#2.xpath 下標 是從 1開始; 只能取 平級關係的標籤
result = x_data.xpath('
//li[5]/text()')
result = x_data.xpath('
/html/body/ul/li/a/text()')
result = x_data.xpath('
//a[2]')
print(result)
拆分例項
importrequests
from lxml import
etree
import
json
class
btcspider(object):
def__init__
(self):
self.base_url = '
'self.headers =
self.data_list =
#1.發請求
defget_response(self, url):
response = requests.get(url, headers=self.headers)
#網頁的 編碼到底 是 gbk 還是 urf-8 head--meta-charset=""
#原因 是 抓取 網頁的 編碼 就是 gbk的 所以 解碼的時候 也是要gbk
#data = response.content.decode('gbk')
data =response.content
return
data
#2.解析資料
defparse_data(self, data):
#使用xpath 解析當前頁面 所有的 新聞title 和url 儲存
#1.轉型別
x_data =etree.html(data)
#2.根據xpath路徑解析
#路徑 1. 純手寫 2. 借助瀏覽器的 右擊 貼上xpath路徑; 需要修改
title_list = x_data.xpath('
//a[@class="s xst"]/text()')
#title_list = x_data.xpath('//form[@id="moderate"]/div/div[2]/div/a[@class="s xst"]/text()')
url_list = x_data.xpath('
//a[@class="s xst"]/@href')
for index, title in
enumerate(title_list):
news ={}
#print(index)
#print(title)
news['
name
'] =title
news[
'url
'] =url_list[index]
#3.儲存資料
defs**e_data(self):
#將 list---str
data_str =json.dumps(self.data_list)
with open(
'05btc.json
', 'w'
) as f:
f.write(data_str)
#4.啟動
defrun(self):
for i in range(1, 5):
#1.拼接 完整url
url = self.base_url + str(i) + '
.html
(url)
#2.發請求
data =self.get_response(url)
#3.做解析
self.parse_data(data)
#4.儲存
self.s**e_data()
btcspider().run()
Xpath解析資料
xpath,xml path language。是一種小型的查詢語言,是一門在xml文件中查詢的語言。優點 可以在xml中查詢資訊 支援html的查詢 可通過元素和屬性進行導航。xpath的樹形結構 使用xpath選取節點 表示式描述nodename 選取此節點的所有子節點 從根節點擊擇 從匹配選擇...
xpath解析基礎
import requests from lxml import etree if name main headers ua偽裝 例項化好了乙個etree物件,且將被解析的檔案載入到了物件中 tree etree.parse test.html r tree.xpath html body div ...
xpath解析基礎
xpath解析 最常用且最便捷高校的一種解析方式。通用性。xpath解析原理 1.例項化乙個etree的物件,且需要將被解析的頁面原始碼資料載入到該物件中。2.呼叫etree物件中的xpath方法結合著xpath表示式實現標籤的定位和內容的捕獲。環境的安裝 pip install lxml 如何例項...