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动态网页数据收集 -> 正文阅读

[Python知识库]Python动态网页数据收集

作者:recommend-box insert-baidu-box
对于静态网页,只需要把网页地址栏中的url传到get请求中就可以轻松地获取到网页的数据。但是,经常会遇到直接把网页地址栏中的url传到get请求中无法直接获取到网页的数据的情况,而且右键查看网页源代码也无法看到网页的数据,同时点击第二页、第三页等进行翻页的时候,网页地址栏中的url也没变,这些就是动态网页。

动态网页数据收集有两种方式:

第一种:

先分析网页数据获取和跳转的逻辑,再去写代码。

第二种:

Selenium+WebDriver,驱动浏览器,模拟用户输入,获取目标网页源码。

(第一种我不会,就直接选第二种,相比第一种,Selenium+WebDriver优点是逻辑简单,编码时间短,缺点是driver运行慢)

Selenium

安装:

pip install torchtext(我也不知道为什么要装这个,但是直接install selenium就是不行)
pip install selenium

WebDriver

根据自己的浏览器和版本安装:

chrome浏览器的web driver(chromedriver.exe),可以在下面网址访问:
http://npm.taobao.org/mirrors/chromedriver/

firefox(火狐浏览器)的**web driver (geckodriver.exe)**在这里访问:
https://github.com/mozilla/geckodriver/releases

其他浏览器驱动可以见下面列表:

Edge:https://developer.microsoft.com/en-us/micrsosft-edage/tools/webdriver

Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

以谷歌浏览器为例:

在浏览器设置–>>关于Chrome查看浏览器版本,再下载对应的chromedriver

chromedriver.exe放到python.exe的同级目录下

运行下面的代码测试,弹出浏览器打开百度就可以了

chromedriver测试代码

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

无界面测试代码 (Headless是无界面模式)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options=Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver=webdriver.Chrome(options=chrome_options)
driver.get("http://www.baidu.com")
print(driver.title)
driver.close()
driver.quit()

简单实战

在1688搜索键盘,根据成交额排序,收集商品名和复购率数据

  1. 浏览器打开网站
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep

#设置浏览器窗口大小,设大一点才能点击到
window_width=2048
window_height=2048*20
driver=webdriver.Chrome()
driver.set_window_size(window_width, window_height)
driver.get("https://www.1688.com/")

ps:有的界面需要滚动才会动态加载内容,可以把窗口设置大一点,当然也可以调用driver的滚动方法

  1. 找到搜索框和搜索按钮
#输入查找关键字
element = driver.find_element_by_css_selector('#home-header-searchbox')
element.send_keys('键盘')#模拟输入文字

#点击搜索
element = driver.find_element_by_css_selector('#search-tab-wrap > div.search-box-wrap > div > div > div.ali-search > form > fieldset > div > div.alisearch-action > button')
element.click()#模拟鼠标点击

3 切换到新窗口

点击搜索后,打开了新的窗口,切换到新窗口

#打开搜索产品的窗口
driver.switch_to.window(driver.window_handles[-1])
  1. 点击成交额
#点击成交额
element = driver.find_element_by_css_selector('#search-filtItems > div.filter-item-container > ul > li:nth-child(2) > a > span')
element.click()
sleep(2)#等待一会儿 加载完这一页所有产品
  1. 获取当前页产品文本和复购率文本
for i in range(1,30):
    try:
    	element = driver.find_element_by_xpath('//*[@id="sm-offer-list"]/div['+str(i)+']/div/div[2]/a/div')
    	etext=element.text
    	element =driver.find_element_by_xpath('//*[@id="sm-offer-list"]/div['+str(i)+']/div/div[3]/div[2]/span')
    	fugou=element.text
    	print(etext+'   '+fugou)#这里就输出到控制台
	except Exception:
        print('index:'+str(i)+'获取失败')
        #print(traceback.format_exc()) #输出堆栈 需要import traceback
sleep(1000)
driver.close()
driver.quit()
print('退出')

获取UI元素的技巧

  1. 在对应的UI上右键,选中检查

  2. 在弹出的窗口会定位到这个UI组件的标签块,对这个标签块再右键Copy
    根据自己的习惯选择复制的选项,常用的有css selector和xpath

史上最全!Selenium元素定位的30种方式

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:06:21  更:2022-04-29 12:07:12 
 
开发: 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 15:52:37-

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