关于Ajax的响应结果的获取
## 我这里用的方法是Selenium+Chromedriver模拟浏览器
Selenium
1. Selenium
1.什么是selenium?
(1)Selenium是一个用于Web应用程序测试的工具。
(2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。
(3)支持通过各种driver(FirfoxDriver,IternetExplorerDriver,ChromeDriver)驱动真实浏览器完成测试。
(4)selenium也是支持无界面浏览器操作的。
2.为什么使用selenium?
模拟浏览器功能,自动执行网页中的js代码,实现动态加载
3.如何安装selenium?
(1)操作谷歌浏览器驱动下载地址
http://chromedriver.storage.googleapis.com/index.html
(2)谷歌驱动和谷歌浏览器版本之间的映射表
http://blog.csdn.net/huilan_same/article/details/51896672
(3)查看谷歌浏览器版本
谷歌浏览器右上角‐‐>帮助‐‐>关于
(4)pip install selenium(安装pyinstaller中详细介绍了怎么用命令行安装模块)
4.selenium的使用步骤?
(1)导入:from selenium import webdriver
(2)创建谷歌浏览器操作对象:
path = 谷歌浏览器驱动文件路径
browser = webdriver.Chrome(path)
(3)访问网址
url = 要访问的网址
browser.get(url)
以百度贴吧为例,学习简单的Selenium+Chromedriver的使用**
**这里解析我用的是xpath+XPath Helper ,也可以用正则**
贴吧中帖子信息获取
要求:
1 用户输入吧名,获得第一页中所有的帖子
2 帖子需要包含:名称,作者,最后回复人
3 将帖子信息保存成到文件中
过程:利用selenium加Chromedriver模拟浏览器行为获取数据(我获取的实时数据)ajax请求
chromedriver.exe我是用了自己电脑版本的,
先通过模拟浏览器搜索自己要搜的页面,然后再获取自己想要的数据(数据解析我是用了xpath以及XPath Helper插件)
难点:要获取的数据是Ajax请求的
代码如下:
from lxml import etree
from selenium import webdriver
if __name__ == '__main__':
name = input("请输入要搜索的贴吧名称:")
url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0".format(name)
path = "chromedriver.exe"
browser = webdriver.Chrome(path)
browser.get(url)
content = browser.page_source
print(content)
tree = etree.HTML(content)
li_list = tree.xpath('//div/ul[@id="thread_list"]/li')
message=[]
for i in range(1, len(li_list)):
mes = {}
name = li_list[i].xpath('./div/div[2]/div[1]/div[1]/a/text()')[0]
author = li_list[i].xpath('./div/div[2]/div[1]/div[2]/span[1]/@title')[0].split(':')[1]
final_res = li_list[i].xpath('./div/div[2]/div[2]/div[2]/span[1]/@title')[0].split(':')[1]
mes["名称"]=name
mes["作者"]=author
mes["最后回复人"]=final_res
message.append(mes)
with open("贴吧.json",'w',encoding='utf-8')as fp:
fp.write(str(message))
在这里插入图片描述
json数据格式化快捷键:ctrl+alt+L
|