HTML文本解析

解浩渺
2023-12-01

HTML文本解析

一、Xpath解析数据

1、解析库lxml安装

(1)windows下安装:

pip install lxml

如果没有报错,说明安装成功。

如果出错,例如:提示缺少libxml2,则可以采用wheel方式安装。可以到以下链接下载对应wheel(网址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml),找到与Python版本和系统对应的lxml版本,如:Windows64、Python3.6,就选择lxml‑3.8.0‑cp36‑cp36m‑win_amd64.whl,将其下载到本地。最后使用pip安装:

pip install lxml‑3.8.0‑cp36‑cp36m‑win_amd64.whl

(2)Linux下安装:

pip install lxml

(3)Mac下安装:

pip install lxml

如果出现错误,可以执行如下命令安装必要的库;

xcode-select –install

注意:XPath是一个解析语言,只有安装解析库才可以对网页数据进行解析;

2、XPath的一些用法

(1)标签内容的提取:

eg:

name = oneSelector.xpath("div/div[@class = \"info\"]/div[@class = \"hd\"]/a/span[1]/text()")[0]

注:

1、在标签的选择里面,选择到目标标签,在标签的后面加上/text()*,即获得目标标签的文本内容;*

2、若要获取目标标签属性的内容,则需要选择到目标标签,然后在标签的后面加上/@属性值;**

3、xpath获取的标签内容都是以列表的形式存在,若需要对获取内容处理(字符串),则需要在获取到的列表标签中加上[第几个]*,得到的内容为字符串类型。*

二、BeautifulSoup解析数据

1、安装BeautifulSoup

pip install beautifulsoup4

这个包兼容Python2和Python3

2、解析器

默认用lxml,因为效率高

数据持久化存储

一、将数据保存于文件

1、数据保存于文件中

保存数据最简单的方法就是使用Python的文件操作函数,将数据保存于csv、txt等文件中,Python的文件操作函数主要有:

  • f.open(): 打开文件
  • f.write(): 写入文件
  • f.close(): 关闭文件

当配合with一起使用时,我们无需关心文件关闭的问题,系统自动关闭,如:

with open(“douban.csv”) as f:

二、使用MySQL持久化数据

1、MySQL介绍

MySQL是一种关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。它应用及其广泛,它开源免费、高效、可移植性好。像阿里巴巴、去哪儿、腾讯等知名互联网公司都有在使用MySQL数据库。

2、Python连接MySQL的基本格式

	oneMovie = [name, score, num]
	allMovieslist.append(oneMovie)
    for i in allMovieslist:
        # print(i)
        # 连接到本地MySQL数据库
        # 新版数据连接要加最后一个参数  pymysql.cursors.DictCursor表示字典类型   pymysql.cursors.Cursor表示数组类型
        conn = pymysql.connect(host='localhost', user='root', passwd='123456', database='douban',
                               cursorclass=pymysql.cursors.DictCursor)
        # 获取游标
        cursor = conn.cursor()
        try:
            cursor.execute("insert into movies(name, star, num1) values ('%s', %s, %s)"%(i[0], float(i[1]), int(i[2])))
            conn.commit()
        except Exception as e:
            print(e)
            # 回滚
            conn.rollback()
        conn.close()

Selenium语法

1、声明浏览器对象

Selenium支持很多浏览器,如Chrome、Firefox、IE、Opera、Safari等,还有Android、BlackBerry等手机端的浏览器。selenium.webdriver 模块提供了所有浏览器的驱动(WebDriver),可以生成不同浏览器的对象。

下面是声明不同浏览器对象的实现代码:

from selenium import webdriver

driver = webdriver.Chrome()  #声明Chrome浏览器对象
driver = webdriver.ie()       #声明ie浏览器对象
driver = webdriver.firefox()   #声明firefox浏览器对象
driver = webdriver.phantomjs()#声明phantomjs浏览器对象
driver = webdriver.safari()    #声明safari浏览器对象

2、访问页面

可以使用get方法实现页面的访问:

driver.get("url")	# 请求页面

3、获取页面代码

使用driver的page_source属性回去页面的HTML代码:

# 获取代码
HTML = driver.page_source

4、定位元素

当获取到HTML代码后,就需要定位到HTML的各个元素,以便提取数据或者对该元素执行诸如输入、点击操作。WebDriver 提供了大量的方法查询页面中的节点,这些方法形如:find_element_by_*。

以下为Selenium查找单个节点的方法。

drivr.find_element_by_id:# 通过ID查找
drivr.find_element_by_name:# 通过NAME查找
drivr.find_element_by_xpath:# 通过xpath选择器查找
drivr.find_element_by_link_text:# 通过链接的文本查找(完全匹配)
drivr.find_element_by_partial_link_text:# 通过链接的文本查找(部分匹配)
drivr.find_element_by_tag_name:# 通过标签名查找
drivr.find_element_by_class_name:# 通过CLASS查找
drivr.find_element_by_css_selector:# 通过css选择器查找

5、页面交互

Selenium可以模拟用户对页面执行一系列操作,如输入数据、清除数据、单击按钮等。以下代码实现了定位到搜索框后,清空搜索框中的文字,输入“iphone”,回车的功能。

input = driver.find_element_by_id("searchKeywords")#查找节点
input.clear()#清除输入框中默认文字
input.send_keys("iphone")#输入框中输入“iphone”
input.send_keys(Keys.RETURN)#回车功能

6、执行JavaScript

Selenium并未提供所有的页面交互操作方法,例如爬虫中用得最多的下拉页面(用于加载更多内容)。Selenium提供了execute_script()方法,用于执行JS,这样我们就可以通过JS代码实现这些操作了。以下代码实现了将页面下拉到底部的功能。

driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
 类似资料: