简单爬虫
文章目录
前言
学习了一些简单爬虫
一、基础知识
浏览器:安装在客户端,具有交互界面,用来访问和渲染服务器资源的应用软件
服务器:部署在机房,为网站存储和处理数据的高性能不间断工作计算机
html:通过一系列标签,将网络上的文字、图片等数据整合在一起的语言
<标签名 属性名=“值” 属性名=“值” >文本</标签名>
网页:存储HTML标签、CSS样式、JavaScript脚本等元素组成的文件
二、XPath表达式
可以在html中定位标签的字符串,于1999年成为W3C标准。
XPathHelper
用于轻松解析html标签的谷歌Chrome浏览器扩展程序 安装: 下载压缩包”XPathHelper.zip”
打开Chrome浏览器 -> 设置 -> 更多工具 -> 扩展程序 - 开发者模式
打开开发者模式 -> 加载已解压的扩展程序 -> 重启浏览器
使用: 打开网页,选定内容后右键“检查” Ctrl + Shift + X 启动XPathHelper 参照开发者窗口填写XPath表达式
三、Web请求过程
静态网页:在服务器端将页面结构与数据整合在一起返回给浏览器(网页源代码中看数据)。
https://movie.douban.com/chart
动态网页:客户端第一次请求服务器返回页面结构,第二次请求服务器返回数据(在Fetch/XHR中看数据)。
https://movie.douban.com/typerank?type_name=%E5%8A%A8%E4%BD%9C&type=5&interval_id=100:90&action=
重要请求信息:
– Cookie:服务器存储在浏览器中的信息
– Referer:防盗链(记录发起本次请求的页面URL)
– User-Agent:浏览器的身份标识
四、Selenium
简介
Web网站自动化测试工具
通过编写自动化程序,模拟人在浏览器中操作网页
从网页获取信息
原理
安装
- 在命令行安装Python库:
Linux操作系统:sudo pip3 install selenium -i https://pypi.douban.com/simple/
Windows:python -m pip install selenium -i https://pypi.douban.com/simple/ - 根据浏览器版本下载驱动
http://npm.taobao.org/mirrors/chromedriver/ - Linux安装
下载后提取到主目录
使用命令拷贝到/usr/bin/目录下:sudo cp chromedriver /usr/bin/
添加权限:sudo chmod 777 /usr/bin/chromedriver - Windows
把解压后文件拷贝到python安装目录的Scripts目录下
查看python安装目录(cmd命令行):where python
打开浏览器
from selenium import webdriver
常规
driver = webdriver.Chrome()
driver.get(“网址”)
无头
option = webdriver.ChromeOptions()
option.add_argument(‘–headless’)
driver = webdriver.Chrome(options=option)
操作浏览器
关闭
driver.quit()
后退
driver.back()
向前
driver.forward()
定位html标签
from selenium.webdriver.common.by import By
查找单个元素,结果类型为WebElement
标签 = driver.find_element(By.XPATH,‘‘XPath表达式’’)
查找多个元素,结果类型为list[WebElement]
标签列表 = driver.find_elements(By.XPATH,‘‘XPath表达式’’)
操作html标签
获取标签文本
结果 = 标签.text
模拟鼠标单击
标签.click()
模拟键盘输入
标签.send_keys(“内容”)
清空输入框值
标签.clear()
获取标签属性值
结果 =标签.get_attribute(“属性名”)
Pandas
Python数据分析工具,可以完美代替Excel完成除单元格样式设置外的所有功能
DataFrame
Pandas中一个表格型的数据类型
df = pd.DataFrame(字典类型的表格)
df.to_csv(“文件名.csv”, index=False)
一些练习
"""
练习:百度热搜-新闻
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
# 1. 打开浏览器
driver = webdriver.Chrome()
driver.get("https://top.baidu.com/board?tab=realtime")
# 3. 定位html标签
list_txt = []
for item in driver.find_elements(By.XPATH,'//div[@class="c-single-text-ellipsis"]'):
list_txt.append( item.text )
print(list_txt)
# 2. 操作浏览器
driver.quit() # 退出
"""
练习:简体转繁体
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# driver = webdriver.Chrome()
# 1. 打开无头浏览器
option = webdriver.ChromeOptions()
option.add_argument("--headless")
driver = webdriver.Chrome(options=option)
driver.get("https://www.aies.cn/")
# 2. 定位文本框与按钮
txt_input = driver.find_element(By.XPATH, '//textarea[@id="txt"]')
button_translate = driver.find_element(By.XPATH, '//input[@value="简体转繁体"]')
while True:
# 3. 输入
txt_input.send_keys(input("请输入简体中文:"))
# 4. 转换
button_translate.click()
time.sleep(1) # 睡眠1秒,等待结果
# 5. 获取结果
print("繁体是:" + txt_input.get_attribute("value"))
# 6. 清空
txt_input.clear()
XpathHelper下载链接
链接:https://pan.baidu.com/s/1KtIT7BCW_Xo3RvQCQXs6vA
提取码:7qc2
总结
友友儿,今天就写到这了
希望明天能吃到稍微好吃一点的饭