IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 学习笔记(一) -> 正文阅读

[Python知识库]学习笔记(一)

目标:爬虫东方财经网的资金流向?深物业A(000011)资金流向 _ 数据中心 _ 东方财富网

关键词:selenium xpath

什么是selenium:

selenium:以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用浏览器自动访问目标站点并操作,是一款网页浏览器的模拟器,通常用来做网页测试,用法直观、简单:直接模拟用户行为,用户加载网页获取网页源码。本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等...进而拿到网页渲染之后的结果,可支持多种浏览器

【爬虫入门】selenium爬取动态网页,以及常见的问题_哔哩哔哩_bilibili

什么是Xpath:

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。选取节点 XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。(百度百科)

前期配置:

参照:Anaconda 快速搭建selenium chrome环境(详细教程) - 简书

? ? ? ? 【爬虫入门】selenium爬取动态网页,以及常见的问题_哔哩哔哩_bilibili

如何查看Chrome版本:https://jingyan.baidu.com/article/95c9d20d74a1e8ec4f756149.html

?ChromeDriiver的下载位置:ChromeDriver Mirror

如果运行代码时依旧报错ModuleNotFoundError: No module named 'selenium'或参照教程最后两步出现问题参考这个解决方法:将Chromedriver加入到PATH - 简书

若是报错Chromedriver无path,则将Chromedriver.exe复制到anaconda3路径中去

xpath helper非必要前期准备工作,但可以增加查找定位的效率:Xpath神器 Xpath helper插件安装教程及资源分享_哔哩哔哩_bilibili

前期知识储备:

主要学习网站:bilibili csdn

Python超强爬虫8天速成(完整版)爬取各种网站数据实战案例_哔哩哔哩_bilibili

2021年最新Python爬虫教程+实战项目案例(最新录制)_哔哩哔哩_bilibili

Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析_哔哩哔哩_bilibili

10个Python完整小项目教你爬虫+数据分析+数据可视化_哔哩哔哩_bilibili

等.....

注:没有全部看完 只选取了一部分进行观看

参考代码:

东方财富网爬虫及可视化_linker6619的博客-CSDN博客_东方财富网爬虫

代码

1.浏览器启动设置?

from selenium import webdriver  #导入模块
import time
import csv  #存储数据
from lxml import etree#数据的解析

option = webdriver.ChromeOptions()   #网址获取
option.add_argument('headless')  #设置浏览器静默
driver = webdriver.Chrome(options=option)
driver.get('https://data.eastmoney.com/zjlx/000011.html')
time.sleep(2)
source = driver.page_source#获取到页面源码
mytree = etree.HTML(source)#数据解析 可以用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_Element对象。作为_Element对象,可以方便的使用getparent()、remove()、xpath()等方法。

导入所需包

from selenium import webdriver  #导入模块
import time
import csv  #存储数据
from lxml import etree#数据的解析

ChromeOptions是chromedriver支持的浏览器启动选项

option = webdriver.ChromeOptions()   #网址获取

headless:启动浏览器的时候不想看的浏览器运行,那就加载浏览器的静默模式,让它在后台偷偷运行。

option.add_argument('headless')  #设置浏览器静默 无界面模式

打开页面

driver = webdriver.Chrome(options=option)
driver.get('https://data.eastmoney.com/zjlx/000011.html')
time.sleep(2)

2.定位所需信息位置

tables = mytree.xpath('//div[@class="dataview"]/table')#定位表格

需要爬取的网站:'https://data.eastmoney.com/zjlx/000011.html'

利用辅助工具Xpath:ctrl+shift+x可以快速唤醒xpath helper,用xpath helper定位到我们需要爬取的位置。打开网页,按f12审查网页元素,按ctrl+shift+c点击我们想查看的页面,然后出现该页面的网页信息。然后进行分析:

?可以看到需要的信息在

<div id="table_ls" class="dataview" style="min-height: 150px">

表明我们需要的信息在div这个标签中其名字为class="dataview"或者id="table_ls"

且在在此之下还有一个table标签

所以可以在xpath helper中输入//div[@class="dataview"]/table或者//div[@id="table_ls"]/table

均能定位到所需信息

?

3. 取出所需信息

for i in range(len(tables)):#循环表格
    onetable = []#储存所有
    trs = tables[i].xpath('.//tr')#取出所有tr标签
    for tr in trs:
        ui = []
        for td in tr:
            texts = td.xpath(".//text()")#取出所有td标签下的文本
            mm = []
           
            for text in texts:
                mm.append(text.strip(""))#字符删除尾部空格和换行符
            ui.append(','.join(mm))
        onetable.append(ui)#整张表格

?对源码进行分析可知

对标题:每一行储存在一个<tr>...<\tr>标签中,且单个指标在<th>...<\th>标签中

对数据:每一行储存在一个<tr>...<\tr>标签中,且单个指标在<td>...<\td>标签中

所以对开始循环整个表格,并创建一个onetable来储存数据

for i in range(len(tables)):#循环表格
    onetable = []#储存所有

接着取出所有tr标签,并创建一个ui用来储存

trs = tables[i].xpath('.//tr')#取出所有tr标签
    for tr in trs:
        ui = []

然后循环tr,取出所有td中的文本信息

for td in tr:
            texts = td.xpath(".//text()")#取出所有td标签下的文本
            mm = []

最后循环上一个文本,并用strip删除尾部空格和换行符,然后逐一写入onetable中

for text in texts:
                mm.append(text.strip(""))#字符删除尾部空格和换行符
            ui.append(','.join(mm))
        onetable.append(ui)#整张表格

4.保存数据

with open('data.csv', 'a', newline='') as file:#将数据写入文件
    csv_file = csv.writer(file)
    for i in onetable:
        csv_file.writerow(i)

time.sleep(2)
driver.close()

完整代码

from selenium import webdriver  #导入模块
import time
import csv  #存储数据
from lxml import etree#数据的解析

option = webdriver.ChromeOptions()   #网址获取
option.add_argument('headless')  #设置浏览器静默 无界面模式
driver = webdriver.Chrome(options=option)
driver.get('https://data.eastmoney.com/zjlx/000011.html')
time.sleep(2)

source = driver.page_source#获取到页面源码
mytree = etree.HTML(source)#数据解析 可以用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_Element对象。作为_Element对象,可以方便的使用getparent()、remove()、xpath()等方法。
tables = mytree.xpath('//div[@class="dataview"]/table')#定位表格
for i in range(len(tables)):#循环表格
    onetable = []#储存所有
    trs = tables[i].xpath('.//tr')#取出所有tr标签
    for tr in trs:
        ui = []
        for td in tr:
            texts = td.xpath(".//text()")#取出所有td标签下的文本
            mm = []
           
            for text in texts:
                mm.append(text.strip(""))#字符删除尾部空格和换行符
            ui.append(','.join(mm))
        onetable.append(ui)#整张表格

with open('data.csv', 'a', newline='') as file:#将数据写入文件
    csv_file = csv.writer(file)
    for i in onetable:
        csv_file.writerow(i)

time.sleep(2)
driver.close()


  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:27:01  更:2021-10-20 12:28:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:53:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码