爬虫基础

web自动化测试第13步:元素定位(2)(webdriver的所有定位方式详解) 一、webdriver中所有的定位方法介绍       在第二节里,我们就接触了webdriver中的8种基础定位方法,但是当我们在pycharm中打出:driver.find时,代码提示中其实是有18个被选项的,这次我们就来讲讲剩余这10种定位方法都是什么,以及它们之间存在的关系。 首先有两个万能定位方法: find_element()寻找符合条件的第一个元素 find_elements... 阅读详情

验证码识别

使用pytesseract工具

  • 验证码识别工具安装
  • pip install pytesseract
  • pip install pillow
import pytesseract
from PIL import Image
# 读取图片
img = Image.open("./code/mbb5.png")
# 将图片转成灰度图片
img = img.convert("L")
# img.show()
s = pytesseract.image_to_string(img)
print(s)

###使用百度AI工具

from aip import AipOcr

""" 你的 APPID AK SK """
APP_ID = '*****'
API_KEY = '**********'
SECRET_KEY = '***************'
# 创建百度AI的OCR客户端
```python
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

""" 读取图片 """
def get_file_content(filePath):
   with open(filePath, 'rb') as fp:
       return fp.read()

image = get_file_content('./code/jitang.jpg')

""" 调用通用文字识别, 图片参数为本地图片 """
x = client.basicGeneral(image)
print(x)


image2 = get_file_content('./code/jack.jpg')
x2 = client.basicAccurate(image2)
print(x2)

selenium框架

selenium+phatomjs和selenium+chrome

selenium:是一种用于web程序测试的工具,selenium测试的代码可以直接运行在浏览器中,就像真正的用户操作一样。

在写python爬虫的时候,主要是用selenium的webdriver 来驱动浏览器进行相关的操作

安装:pip install selenium

selenium中元素查找:

find_element_by_id()

find_elements_by_name()

find_elements_by_xpath()

find_elements_by_tag_name()

find_elements_by_class_name()

find_elements_by_css_selector()

find_elements_by_link_text()
事件

click() 点击

send_keys()

switch_to_alert()

chromedriver:谷歌浏览器驱动

加载方法如下:

法一:driver = webdriver.Chrome(r'/Users/fanjianbo/Desktop/chromedriver')

法二:把chromedriver的目录配成环境变量路径,然后:driver = webdriver.Chrome()

【注意】chromedriver的版本要和chrome浏览器相对应,不然很多功能不能用

下载操作谷歌浏览器驱动的页面:http://chromedriver.storage.googleapis.com/index.html 或者 http://npm.taobao.org/mirrors/chromedriver/2.37/

谷歌驱动和谷歌浏览器版本之间的映射表:http://blog.youkuaiyun.com/huilan_same/article/details/51896672

phantomjs:无界面浏览器

加载方法如下:

	法一:driver = webdriver.PhatomJS("C:\Users\ZBLi\Desktop\1706\day04\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe")

	法二:把phantomjs拷贝到c盘下,并把bin目录配置成环境变量,然后driver = webdriver.PhatomJS()

【注意】phantomjs目前已经不再更新

下载地址:http://phantomjs.org/download.html

利用selenium简单操作百度网页

# 从selenium中导入webdriver
from selenium import webdriver
from time import sleep

# 给浏览器添加无头操作
# 创建一个谷歌浏览器的操作对象
opt = webdriver.ChromeOptions()
# 向谷歌浏览器操作对象中添加操作内容
opt.add_argument("--headless") # "--headless"代表无头,即浏览器只提供内核,不提供界面
opt.add_argument("--disable-gpu") # 去掉GPU的调用
# 创建一个谷歌浏览器的驱动
driver = webdriver.Chrome(options=opt)
# 参数executable_path是驱动的路径,这个驱动一旦被创建出来,就会立即打开一个浏览器的窗口以供后期使用
# 参数options,是给当前浏览器加入一些特殊的操作

print(driver) # 现在driver是当前浏览窗口的驱动对象,它就可在当期程序中代表浏览器

# 用用driver发起一个get请求
driver.get(url="https://www.baidu.com/")
# html = driver.page_source

# 用selenium来选择页面上的元素
news = driver.find_element_by_link_text("新闻")
print(news)
input = driver.find_element_by_id("kw")
print(input)

# 点击新闻按钮,进入新闻页面
news.click()
sleep(0.5)
html = driver.page_source
#
# # 搜索新闻
# ww = driver.find_element_by_id("ww")
#
# # 向输入框中输入内容
# ww.send_keys("老王")
# sleep(0.5)
# # 点击百度一下
# driver.find_element_by_id("s_btn_wr").click()
# sleep(5)

# 提取当期页面的html源码
# html = driver.page_source # 这个源码就是经过浏览器对网页源代码解析以后的页面代码
print(html)
# 关闭浏览器
driver.close()

给窗体添加scroll事件


from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()

url = "https://www.toutiao.com/"

driver.get(url=url)
sleep(3)

# selenium没有原生的下拉操作
# 如果要做下拉刷新,需要用js来操作

# 定义一条js语句,用于操作滚动条滚动
# js = "document.documentElement.scrollTop=100"

# 操作driver来执行js语句
# driver.execute_script(js)

for i in range(100):
    distance = i*100
    s = "document.documentElement.scrollTop=%d"%distance
    print(s)
    driver.execute_script(s)
    sleep(2)

sleep(5)
driver.close()


bs4网页解析工具

from bs4 import BeautifulSoup
# bs4是一个用于html网页解析的工具,xpath根据节点树来定位节点与属性,bs4是根据标签本身的特性来定位

# 用一个html字符串初始化一个BeautifulSoup对象
soup = BeautifulSoup(open("./soup_test.html","r",encoding="utf-8"),"lxml")
# 参数1,代表一个html字符串   参数2,代表一个解析器,因为bs4本身没有解析器,必须依赖于外界的一个解析器进行解析,也可以不借助于外界解析器,但是解析速度会非常慢

# 1、根据标签名来查找对象
ret = soup.a # 查找出来是页面上的第一个a
ret = soup.li
print(ret)
# 2、获取标签的属性
a = soup.a
print(a.get("href")) # 用get函数来获取属性
print(a["title"]) # 用键值的形式来获取属性
print(a.attrs) # 获取所有的属性
print(a.name)
# 3、获取标签内容
li = soup.li
print(li.string) # string属性可以直接提取标签内部的字符串,如果有注释会自动忽略注释;如果当前标签有2个以上的子标签,将无法用string属性来提取字符串
print(li.get_text()) # 获取当前标签中的所有的文本内容(不包括注释)

# 4、获取子标签
body = soup.body
# 1)获取直接子标签
print(body.children)
# for node in body.children:
#     print("=============")
#     print(node)
# 2)获取后代标签
print(body.descendants)
# for node in body.descendants:
#     print("-------------")
#     print(node)

# 5、用相关的函数来获取
# 1)find,找到符合条件的标签中的第一个
a = soup.find("a")
a = soup.find("a",id='hong')
a = soup.find('a',class_='taohua')
print(a)
# 2)findall,找到所有的符合条件的标签
li = soup.find_all("li")
print(li)
# 3)select,根据css选择器来查找
print(soup.select(".cao li"))

简单案例

import json
from time import sleep

import redis
import requests
from bs4 import BeautifulSoup
from lxml import etree
from selenium import webdriver


# url = 'https://category.vip.com/suggest.php?keyword=%E5%8F%A3%E7%BA%A2&page=3'
# res = requests.get(url=url,headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'})
# tree = etree.HTML(res.text)
# tree.xpath("//div[starts-with(@id,'J_pro')]")


#手机口红连衣裙电脑数据线每个产品前10页

#下载模块
def request_data(goods_list,url):

    #创建无头操作
    # opt = webdriver.ChromeOptions()
    # opt.add_argument("--headless")
    # opt.add_argument("--disable-gpu")options=opt


    #创建一个driver
    driver = webdriver.Chrome()
    #遍历goods_list
    for goods in goods_list:
        for page in range(1,11):
            page_url = url%(goods,page)
            #用driver发请求
            driver.get(page_url)
            sleep(1)
            #下拉加载
            for i in range(30):
                js = "document.documentElement.scrollTop=%d"%(i*100)
                print("商品:%s,第%d页,正在进行%d次下拉加载..."%(goods,page,i+1))
                driver.execute_script(js)
                sleep(0.5)
            html = driver.page_source
            yield html

#【解析】
def analysis_data(data):
    for html in data:
        #创建BeautifulSoup对象
        soup = BeautifulSoup(html,'lxml')
        #获取每个商品
        goods_list = soup.select(".goods-list-item")
        for goods in goods_list:
            #用goods来做内部选择
            item = {}
            item["title"] = goods.select(".goods-title-info a")[0].get_text()
            item["disprice"] = goods.select(".inner-exclusive > .title ")[0].get_text()
            item["sellprice"] = goods.select(".goods-sells-price > .price ")[0].get_text()
            item["smallprice"] = goods.select(".goods-market-price")[0].get_text()
            item["discount"] = goods.select(".vipshop-discount")[0].get_text()

            #价格(原价,市场价,疯抢价)存入redis数据库
            # print(item)
            yield item
def write_to_redis(data):
    rds = redis.StrictRedis(host="127.0.0.1",port=6379,db=1)
    for item in data:
        rds.lpush("goodsinfo",json.dumps(item)

if __name__ == '__main__':
    url = "https://category.vip.com/suggest.php?keyword=%s&page=%d"
    goods_list = ["手机","口红"]
    html = request_data(url=url,goods_list=goods_list)

    goods_infos = analysis_data(html)

    write_to_redis(goods_infos)

Python网络爬虫基础 基础知识讲解部分(网络爬虫入门) 网络爬虫就是自动地从互联网上获取程序。想必你听说过这个词汇,但是又不太了解,大家会觉得掌握网络爬虫还是要花一些功夫的,因此这个门槛让你有点望而却步。我常常觉得计算机和互联网的发明给人类带来了如此大的便利,让人们不用阅读说明书就知道如何上手,但是偏偏编程的道路却又是如此艰辛。因此,我会尽可能做到浅显易懂,希望读者能够读懂我说了什么,从而能够享受到其中的快乐。 基本介... 阅读详情

相关推荐

爬虫基础(1)什么是网络爬虫

文章目录一. 认识网络爬虫二. 网络爬虫的组成三. 网络爬虫的类型1. 通用网络爬虫2. 聚焦网络爬虫3. 增量式网络爬虫4. 深层网络爬虫(1)静态网页(2)深层页面和表层页面(3)网络爬虫表单填写四. 网络爬虫的用途 一. 认识网络爬虫 说起网络爬虫,人们常常会用这样一个比喻:如果把互联网比喻成一张网,那么网络爬虫就可以认为是一个在网上爬来爬去的小虫子,它通过网页的链接地址来寻找网页,通过特定的搜索算法来确定路线,通常从网站的某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地

Python达人 2841

selenium WebDriver定位元素学习总结

定位元素先要掌握基本的HTML语法: http://blog.youkuaiyun.com/jojoy_tester/article/details/53222425 http://blog.youkuaiyun.com/jojoy_tester/article/details/53228674 webdriver属于selenium体系中设计出来操作浏览器的一套API,webdriver是pyt

JOJOY的博客 4万+

Python 网络爬虫入门与实践:从基础到高级技巧

详细介绍了 Python 网络爬虫的基础知识、常用库、实战案例以及高级技巧

AI+全栈,AI+应用,实操落地,前沿技术 1691

webdriver中的等待

一、强制等待:sleep() 强制等待是利用Python语言自带的time库中的sleep()方法: fromtimeimportsleep sleep(10) sleep()就是睡觉的意思,就是脚本一旦执行到该条语句就睡10s,再执行后面的语句。它是一个强制等待的方式,使得整个脚本暂停。 缺点:不智能,使用太多的sleep会影响脚本运行速度。 二、隐式等待:implicitly_wait() 隐式等待相比强制等待更智能,一般情况,在脚本中我们是看不到等待语句的,但是它会在每个页面加载的...

weixin_49274450的博客 1043

python网络爬虫学习笔记(1)爬虫概述 安装 Python基础

网络爬虫学习笔记(1) 1 资料 《Python网络爬虫从入门到实践》唐松,陈志铨。主要面向windows平台下的python3。 2 笔记 2-1 爬虫概述 (约2016年)网络爬虫个人使用和科研范畴基本不存在问题,但商业盈利范畴就要看对方了。 通过网站的Robots协议(爬虫协议)可以知道可以和不可以抓取的内容,例如淘宝的[link]https://www.taobao.com/robots...

user_987654321的博客 1800

Windows 2012 SYSVOL复制失败的处理

题外话:晓原理、知架构、查日志是排错的三件法宝今天在DC1上新建并链接了一个组策略对像,在客户端刷新时,却报下面的错误:“处理组策略失败。Windows无法应用组策略对象LDAP….”如下图所示:于是在客户端用\\domain.com访问,发现\\domain.com\SYSVOL\domain.com\policies下面没有上面报错的组策略对象。这是怎么一回事呢,pin...

weixin_33989780的博客 1669

webdriver find_element_by_class_name find_element_by_css_selector

webdriver find_element_by_class_name find_element_by_css_selector 通过样式类名获取元素值

我的地盘 1万+

如何利用 多 张 GPU 高效运行 Ollama

通过以上步骤,我们可以确保系统尽可能地利用所有 多张GPU 来运行 Ollama。如果在配置过程中遇到问题,建议查阅 Ollama 的官方文档,确认其是否支持多 GPU 并行计算,或者对系统性能进行进一步的优化。充分利用多 GPU 的并行计算能力,可以显著提升 Ollama 的运行效率,加快模型的推理和训练速度。希望本文能帮助你顺利实现 多张 GPU 的高效利用。

weixin_44997264的博客 8031

“WebDriver“ object has no attribute “find_element_by_css_selector“

今天用selenium写爬虫, 想用selector查找元素定位的时候报了这样的错误,如图:

BigDataPlayer的博客 2万+

FreeRTOS的学习(十四)——PendSV异常

本文将从任务切换的角度出发,学习PendSV异常的相关概念。

LEOD的博客 1730

保姆级教程:在RK3588开发板上驱动多路MIPI摄像头(从VICAP配置到ISP调优)

本文详细介绍了在RK3588开发板上驱动多路MIPI摄像头的完整流程,从VICAP配置到ISP调优的全方位解析。通过硬件架构分析、开发环境搭建、设备树配置、V4L2数据采集以及ISP图像调优等步骤,帮助开发者高效实现多路摄像头驱动,适用于工业检测和智能安防等领域。

weixin_42552315的博客 389

网络爬虫基础知识与应用指南

网络爬虫(Crawler),又被称为网页蜘蛛(Spider)、网络机器人,是一种按照一定规则,自动抓取万维网信息的程序或脚本。常见的应用案例包括 Google、百度、Bing 等搜索引擎,它们通过爬虫技术从互联网上获取海量信息并建立索引。

wsygjbr的博客 2338

Codex 的 AGENTS.md 到底怎么写?前端、后端两套实战模板,照抄就能用

文件名是大写AGENTS.md,放在项目根目录构建、测试、类型检查命令都是可直接复制执行的只写了 Agent 从代码里推断不出来的约定红线规则用了明确的否定句式(禁止/不要/Never)标注了自动生成目录和禁止修改的模块写清了交付要求(改动清单 + 验证命令 + 风险说明)没有任何密钥、密码、连接串整体一页能看完,核心要点 10 条以内每一条都能通过"删掉会不会更容易犯错"的测试一份短小精准的 AGENTS.md,比一份充斥模糊规则的长文件有用得多。

篮球界最会写bug的人;程序猿中打球最菜的人。 613

python基础及网络爬虫

Python爬虫学习第一课,了解何为爬虫,python基础语法了解

记录学习路上的一些拙见 2867

华为OD技术面八股文_C++_02

汇总华为OD面试C++方面计数八股文真题,提供详细解答。

qq_45776114的博客 766

05 SAP CPI 访问第一个CPI接口

其中的clientid的值可作为Basic验证的用户名,clientsecret的值可作为Basic验证的密码。点击SEND按钮,可看见返回状态为200 OK。在04中,我们得到TOKEN令牌。POSTMAN向下滚动。点击按钮获取token。

SAP CPI 663

网络爬虫基础总结

网络爬虫基础总结网络爬虫1. 爬虫简介网页结构合理的创建标题,有助于目录的生成2.BeatufulSoup 解析网页3.更多请求/下载方式4.加速你的爬虫5.高级爬虫 这篇文章是对莫烦pyhton爬虫基础课进行一个总结,详细教程大家可以参考学习官网:https://morvanzhou.github.io/tutorials/data-manipulation/scraping/ 网络爬虫 对于网...

时光的博客 2968

Ceres&OpenCV 单目相机标定(论文复现)

Ceres&OpenCV 单目相机标定(论文复现)

dayuhaitang1的博客 370

网络爬虫基础

例如,通过爬虫持续抓取纽交所、纳斯达克、港交所等平台的股票价格、成交量、市盈率等实时数据,结合历史数据进行对比分析,构建价格波动模型。借助这些模型,投资者可以预测股票走势,把握投资时机,优化投资组合。网络爬虫技术凭借高效的数据抓取能力,深度渗透到金融业务的各个环节,从市场动态监测到风险精准把控,都离不开它的助力。通用网络爬虫,又称全网爬虫,旨在从互联网上尽可能多地抓取网页信息,覆盖各种类型和主题的网站。),在问题1的基础上,获取每部电影的导演、编剧、主演、类型、上映时间、片长、评分人数以及剧情简。

yusupali19的博客 1079

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python3网络爬虫开发--爬虫基础

爬虫基础

2302_80755459的博客 2905

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

学 Java 网络爬虫,需要哪些基础知识?

说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少。有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic 。我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里...

平头哥的技术博文 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

网络爬虫理论基础

网络爬虫理论基础

Deng872347348的博客 1181

python网络爬虫基础知识

python网络爬虫与信息提取 1、目标 掌握定向网络数据爬取和网页解析的基本能力 the website is the API (将网站作为API获得自己想要的数据) 2、学习过程 (1)、requests库 自动爬取HTML页面,自动向网络提交请求 (2)、robots.txt 网络爬虫排除标准 (3)、Beaytiful Soup库 解析HTML界面和信息内容, (4)、Projects实...

weixin_42515907的博客 2001

Python网络爬虫基础指南

本文介绍了如何使用Python编写一个简单的网络爬虫,从基本结构到异常处理,再到异步请求。实际开发中,可能需要考虑更多因素,如防反爬虫机制、数据清洗与存储、多线程/多进程等。希望这篇文章能帮助你入门Python网络爬虫,并激发你进一步探索的兴趣。

运维人生 1355

Python网络爬虫:从基础到实战的完整指南

Python凭借其强大的生态系统和简单的语法,使网络爬虫开发变得高效而灵活。无论是从简单的HTML页面提取,还是应对复杂的反爬机制,Python都能提供丰富的工具与解决方案。通过本文的介绍,你已掌握了从基础爬虫开发到实战案例的完整流程,未来可以应用于数据分析、市场研究等多种领域。

qq_20245171的博客 1947

网络爬虫基础知识

网络爬虫(Web Crawler 或 Spider)是一种自动化程序,用于在互联网上自动获取信息。它可以从一个或多个初始网页开始,读取网页内容,找到其中的链接,再通过这些链接找到下一个网页,如此循环,直到抓取完所有目标网页。

浪里个狼游记 1387
上一篇: Python操作MongoDB
下一篇: 爬虫之滑动验证破解
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值