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
pip install lxml
pip install lxml
如果出现错误,可以执行如下命令安装必要的库;
xcode-select –install
注意:XPath是一个解析语言,只有安装解析库才可以对网页数据进行解析;
eg:
name = oneSelector.xpath("div/div[@class = \"info\"]/div[@class = \"hd\"]/a/span[1]/text()")[0]
注:
1、在标签的选择里面,选择到目标标签,在标签的后面加上/text()*,即获得目标标签的文本内容;*
2、若要获取目标标签属性的内容,则需要选择到目标标签,然后在标签的后面加上/@属性值;**
3、xpath获取的标签内容都是以列表的形式存在,若需要对获取内容处理(字符串),则需要在获取到的列表标签中加上[第几个]*,得到的内容为字符串类型。*
pip install beautifulsoup4
这个包兼容Python2和Python3
默认用lxml,因为效率高
保存数据最简单的方法就是使用Python的文件操作函数,将数据保存于csv、txt等文件中,Python的文件操作函数主要有:
当配合with一起使用时,我们无需关心文件关闭的问题,系统自动关闭,如:
with open(“douban.csv”) as f:
MySQL是一种关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。它应用及其广泛,它开源免费、高效、可移植性好。像阿里巴巴、去哪儿、腾讯等知名互联网公司都有在使用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支持很多浏览器,如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浏览器对象
可以使用get方法实现页面的访问:
driver.get("url") # 请求页面
使用driver的page_source属性回去页面的HTML代码:
# 获取代码
HTML = driver.page_source
当获取到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选择器查找
Selenium可以模拟用户对页面执行一系列操作,如输入数据、清除数据、单击按钮等。以下代码实现了定位到搜索框后,清空搜索框中的文字,输入“iphone”,回车的功能。
input = driver.find_element_by_id("searchKeywords")#查找节点
input.clear()#清除输入框中默认文字
input.send_keys("iphone")#输入框中输入“iphone”
input.send_keys(Keys.RETURN)#回车功能
Selenium并未提供所有的页面交互操作方法,例如爬虫中用得最多的下拉页面(用于加载更多内容)。Selenium提供了execute_script()方法,用于执行JS,这样我们就可以通过JS代码实现这些操作了。以下代码实现了将页面下拉到底部的功能。
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')