我最喜欢用两种解析方式

#第一种解析方式  etree+xpath  提取匹配标签
a = "<div class='a'>123<p>1455555</p></div>"

from lxml import etree
con = etree.HTML(a)
print(con)
print(con.xpath("//div/text()"))
print(con.xpath("//div/p/text()"))
print(con.xpath("//div//text()"))

# 输出结果:
['123']
['1455555']
['123', '1455555']  


# 第二种提取标签的方式  Selector +css 提取

from scrapy import Selector
a = "<div class='a'>123<p>1455555</p></div>"
con = Selector(text=a)
print(con)
print(con.xpath("//div/text()").extract())
print(con.xpath("//div/p/text()").extract())
print(con.xpath("//div//text()").extract())

# 输出结果:
<Selector xpath=None data='<html><body><div class="a">123<p>1455555'>
['123']
['1455555']
['123', '1455555']



# string(.)的用法
b = con.xpath("//div")
# 获取标签下面的所有的字符
print(b.xpath("string(.)"))  

# 输出结果:
[<Selector xpath='string(.)' data='1231455555'>]

当然还有其他的提取方式,比如说re,css, bs4, pyputer 等等等等, 个人对xpath比较熟悉,所以一般情况下我会使用xpath,有的字段麻烦的,会对提取的结果用一个正则表达式来获取想要的文本。

requests请求的特殊几种获取方式处理

# requests默认使用application/x-www-form-urlencoded对POST数据编码。如果要传递JSON数据,可以直接传入json参数:
url = "https://123456.com"
params = {'key': 'value'}
r = requests.post(url, json=params)  # 内部自动序列化为JSON

# 要在请求中传入Cookie,只需准备一个dict传入cookies参数:
cs = {'token': '12345', 'status': 'working'}
r2 = requests.get(url, cookies=cs)