爬虫提取标签的几种方式

我最喜欢用两种解析方式

#第一种解析方式  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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值