爬虫6 使用xpath语法,解析HTML
简述:BeautifulSoup 外, python常用的解析HTML、XML的第三方库:lxml, lxml中语法为xpath
实例1: 提取‘某点’ 月票榜中部分作品的作者(列表)
1. 使用lxml中的etree提取响应数据中的HTML标签树。
2. 使用xpath语法来解析标签树。
"""lxml使用xpath语法,来解析HTML""" from lxml import etree import requests from fake_useragent import UserAgent url = "https://www.qidian.com/rank/yuepiao?page=1" headers = { 'User-Agent': UserAgent().random } r = requests.get(url, headers=headers) print('---返回值: ', r.status_code, '---响应编码: ', r.encoding) print('返回数据: ', r.text) # 定义etree的HTML对象 e = etree.HTML(r.text) # 使用.xpath语法,编写逻辑 # '//h4/a/text()': 某h4标签下的a标签中的内容 # '//p[@class="author"]/a[1]/text()': 某p标签,class属性为“author”,下面的第一个a标签,下的内容 book_names = e.xpath('//h4/a/text()') authors = e.xpath('//p[@class="author"]/a[1]/text()') print(book_names) print(authors)
实例2:提取 '某点' 某部作品的某一章免费章节
"""实例: 使用xpath、BeautifulSoup解析出起点某作品单章内容""" from lxml import etree import requests from fake_useragent import UserAgent from bs4 import BeautifulSoup url = "https://read.qidian.com/chapter/5d93gIHh31fOVUeyz9PqUQ2/C0mW-1dVpbdOBDFlr9quQA2" headers = { 'User-Agent': UserAgent().random } r = requests.get(url, headers=headers) content = r.text print('---返回值: ', r.status_code, '---响应编码: ', r.encoding) # print('返回数据: ', r.text) # 1. 使用xpath 解析出章节内容 e = etree.HTML(r.text) content = e.xpath('//div[@class="read-content j_readContent"]/p/text()') print(content) # 2. 使用BeautifulSoup 解析出章节内容 # soup = BeautifulSoup(r.text, 'html.parser') # 按照字典的形式给attrs参数赋值 # print(soup.find_all(name='div', attrs={"class": "read-content j_readContent"}))
                    
                
                
            
        
浙公网安备 33010602011771号