当前位置: 首页 > wzjs >正文

手机网站建设cz35网站开发工程师是什么内容

手机网站建设cz35,网站开发工程师是什么内容,房子设计师怎么找,qq快速登录入口目录 前言 1 完整代码 2 代码解读 2.1 导入模块 2.2 定义 TaoBao 类 2.3 search_infor_price_from_web 方法 2.3.1 获取下载路径 2.3.2 设置浏览器选项 2.3.3 反爬虫处理 2.3.4 启动浏览器 2.3.5 修改浏览器属性 2.3.6 设置下载行为 2.3.7 打开淘宝登录页面 2.3.…

目录

前言

1 完整代码

2 代码解读

2.1 导入模块

2.2 定义 TaoBao 类

2.3 search_infor_price_from_web 方法

2.3.1 获取下载路径

2.3.2 设置浏览器选项

2.3.3 反爬虫处理

2.3.4 启动浏览器

2.3.5 修改浏览器属性

2.3.6 设置下载行为

2.3.7 打开淘宝登录页面

2.3.8 登录淘宝

2.3.9 搜索商品并提取信息

2.3.10 提取商品信息

3.11 保存数据到Excel

2.4 执行脚本

3 总结与思考


前言

Selenium作为主流的Web自动化测试框架,在数据采集领域也有广泛应用。本文将分享如何使用Selenium实现淘宝物资价格信息的爬取。目前代码还存在一些缺陷,主要体现在:1)未能有效绕过淘宝的反爬虫机制;2)登录环节仍需人工干预。欢迎大伙在评论区分享解决方案。

1 完整代码

import datetime
import os
import timeimport pandas as pd
import win32api
import win32con
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import Byclass TaoBao():# 下载每月出门单信息def search_infor_price_from_web(self, path_dir=os.path.abspath(r'.'), descr_list=['脱脂纱布', '机器人', '衬衫']):key1 = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 0,win32con.KEY_READ)download_path = win32api.RegQueryValueEx(key1, 'Desktop')[0]download_path = os.path.join(os.path.dirname(download_path), 'Downloads')print(download_path)# FileProcess().remove_assign_excel_file_in_path(download_path, key)# 重新从网站下载调拨文件print('浏览器设置默认信息,如关闭下载保留提示!!!')start_x_1 = datetime.datetime.now()options = Options()prefs = {'download.prompt_for_download': False, 'download.default_directory': download_path}options.add_experimental_option("prefs", prefs)options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 这里去掉window.navigator.webdriver的特性options.add_argument("--disable-blink-features=AutomationControlled")options.add_argument('--force-device-scale-factor=1')options.add_argument('--start-maximized')  # 最大化窗口options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 禁用自动化栏options.add_experimental_option('useAutomationExtension',False)  # 禁用自动化栏的原理:将window.navigator.webdriver改为undefined。# 屏蔽密码提示框prefs = {'credentials_enable_service': False, 'profile.password_manager_enabled': False}options.add_experimental_option('prefs', prefs)# 反爬虫特征处理options.add_argument('--disable-blink-features=AutomationControlled')# options.add_argument("--headless")  # 无界面模式# options.add_argument("--disadle-gpu")  # 禁用显卡# driver = webdriver.Chrome(chrome_options=options)driver = webdriver.Chrome(options=options)# 修改了浏览器的内部属性,跳过了登录的滑动验证driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})# driver = webdriver.Chrome()driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')params = {'cmd': 'Page.setDownloadBehavior','params': {'behavior': 'allow', 'downloadPath': download_path}}driver.execute("send_command", params)print('浏览器将打开已经进入!!!')end_x_1 = datetime.datetime.now()print('花费%s时长进入浏览器!!!' % (end_x_1 - start_x_1))driver.maximize_window()  # 最大化谷歌浏览器driver.implicitly_wait(10)  # 隐性等待10s# driver.get('https://www.taobao.com')driver.get('https://login.taobao.com/member/login.jhtml')# 修改了浏览器的内部属性,跳过了登录的滑动验证driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})# 手机扫码登入# 尝试输入密码try:time.sleep(3)# 输入账号密码username = driver.find_element(By.ID, 'fm-login-id')# username.send_keys('jianfei.xu')username.send_keys('XXXXXX')time.sleep(10)password = driver.find_element(By.ID, 'fm-login-password')# password.send_keys('0000000.')password.send_keys('XXXXX')time.sleep(10)# 点击登入driver.find_element(By.XPATH,'/html/body/div/div[2]/div[3]/div/div/div/div[1]/div/form/div[6]/button').click()driver.implicitly_wait(10)  # 隐式等待10stime.sleep(5)except:passtime.sleep(60)print(123)data_list = []for search_str in descr_list:# 输入搜索框path = '/html/body/div[3]/div[2]/div[1]/div/div/div[3]/div/div[1]/form/div[4]/input'driver.find_element(By.XPATH, path).clear()driver.find_element(By.XPATH, path).send_keys(search_str)time.sleep(2)# 查询path = '/html/body/div[3]/div[2]/div[1]/div/div/div[3]/div/div[1]/form/div[2]/button'driver.find_element(By.XPATH, path).click()time.sleep(2)# 切换浏览器窗口handle = driver.window_handles  # 获取句柄,得到的是一个列表driver.switch_to.window(handle[-1])  # 切换至最新句柄time.sleep(10)try:path = '/html/body/div[3]/div[3]/div[1]/div[1]/div/div[2]/div[3]'text_str = driver.find_element(By.XPATH, path).textexcept:passtry:path = '/html/body/div[3]/div[3]/div/div[1]/div/div[3]'text_str = driver.find_element(By.XPATH, path).textexcept:pass'/html/body/div[3]/div[4]/div/div[1]/div/div[3]/div[3]/div/div[1]/a/div/div[1]/div[1]/img[1]''/html/body/div[3]/div[4]/div/div[1]/div/div[3]/div[3]/div/div[2]/a/div/div[1]/div[1]/img''/html/body/div[3]/div[4]/div/div[1]/div/div[3]/div[3]/div/div[3]/a/div/div[1]/div[1]/img''/html/body/div[3]/div[4]/div/div[1]/div/div[3]/div[3]/div/div[4]/a/div/div[1]/div[1]/img'# 对text_str进行数据提取print(text_str)data_dic = {}data_dic['物资'] = search_strtext_list = text_str.split('\n')print(text_list)ix = 1for i in range(len(text_list)):each_str = text_list[i]if each_str == '¥':print('>>>>>>>>>>>>>>>>>>>>')descr_picture_url = os.path.join(path_dir, text_list[i - 1] + '.webp')print(descr_picture_url)print(text_list[i - 1])  # 描述print(text_list[i])print(text_list[i + 1])  # 金额print(text_list[i + 3])  # 地点data_dic['对比%s-描述' % str(ix)] = text_list[i - 1]data_dic['对比%s-金额' % str(ix)] = text_list[i + 1]data_dic['对比%s-地点' % str(ix)] = text_list[i + 3]ix += 1data_list.append(data_dic)print('>>>>>>>>>>>>>>>>>>')print(text_str)# 关闭最新窗口# 跳转到新页面进行完一系列操作后driver.close()  # 关闭新开的页面time.sleep(2)driver.switch_to.window(driver.window_handles[0])  # 跳转首页df = pd.DataFrame(data_list)df.to_excel('temp123.xlsx')df = pd.DataFrame(data_list)df.to_excel('temp123.xlsx')return df# 类引用
TaoBao().search_infor_price_from_web()

这段代码是一个使用Selenium自动化工具从淘宝网站上抓取商品信息的Python脚本。代码的主要功能是通过模拟浏览器操作,登录淘宝,搜索指定商品,并提取商品的价格、描述和地点等信息,最后将这些信息保存到Excel文件中。以下是对上述代码的详细解读

2 代码解读

2.1 导入模块

import datetime
import os
import time
import pandas as pd
import win32api
import win32con
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
  • datetimeostime:用于处理日期、时间和文件路径。

  • pandas:用于数据处理和保存到Excel文件。

  • win32apiwin32con:用于访问Windows注册表,获取下载路径。

  • selenium:用于自动化浏览器操作,模拟用户行为。

2.2 定义 TaoBao 类

class TaoBao():
  • 这个类封装了从淘宝网站抓取商品信息的功能。

2.3 search_infor_price_from_web 方法

def search_infor_price_from_web(self, path_dir=os.path.abspath(r'.'), descr_list=['脱脂纱布', '机器人', '衬衫']):
  • 这是类中的主要方法,用于从淘宝网站抓取商品信息。

  • path_dir:指定保存文件的路径,默认为当前目录。

  • descr_list:要搜索的商品列表,默认为 ['脱脂纱布', '机器人', '衬衫']

2.3.1 获取下载路径

key1 = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 0,win32con.KEY_READ)
download_path = win32api.RegQueryValueEx(key1, 'Desktop')[0]
download_path = os.path.join(os.path.dirname(download_path), 'Downloads')
print(download_path)
  • 通过访问Windows注册表,获取用户的桌面路径,并将其修改为下载路径(Downloads文件夹)。

2.3.2 设置浏览器选项

options = Options()
prefs = {'download.prompt_for_download': False, 'download.default_directory': download_path}
options.add_experimental_option("prefs", prefs)
  • 设置Chrome浏览器的下载选项,禁用下载提示,并指定下载路径。

2.3.3 反爬虫处理

options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 去掉window.navigator.webdriver的特性
options.add_argument("--disable-blink-features=AutomationControlled")
  • 通过修改浏览器选项,避免被网站识别为自动化脚本。

2.3.4 启动浏览器

driver = webdriver.Chrome(options=options)
  • 启动Chrome浏览器,应用之前设置的选项。

2.3.5 修改浏览器属性

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
  • 通过执行Chrome DevTools Protocol命令,修改浏览器的navigator.webdriver属性,避免被检测为自动化工具。

2.3.6 设置下载行为

driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior','params': {'behavior': 'allow', 'downloadPath': download_path}}
driver.execute("send_command", params)
  • 设置浏览器的下载行为,允许下载并指定下载路径。

2.3.7 打开淘宝登录页面

driver.get('https://login.taobao.com/member/login.jhtml')
  • 打开淘宝的登录页面。

2.3.8 登录淘宝

username = driver.find_element(By.ID, 'fm-login-id')
username.send_keys('XXXXX')
password = driver.find_element(By.ID, 'fm-login-password')
password.send_keys('XXXXX')
driver.find_element(By.XPATH, '/html/body/div/div[2]/div[3]/div/div/div/div[1]/div/form/div[6]/button').click()
  • 通过输入用户名和密码,点击登录按钮,完成登录操作。

2.3.9 搜索商品并提取信息

for search_str in descr_list:driver.find_element(By.XPATH, path).clear()driver.find_element(By.XPATH, path).send_keys(search_str)driver.find_element(By.XPATH, path).click()
  • 遍历descr_list中的每个商品名称,输入搜索框并点击搜索按钮。

2.3.10 提取商品信息

text_str = driver.find_element(By.XPATH, path).text
text_list = text_str.split('\n')
  • 从搜索结果页面中提取商品信息,并将其拆分为列表。

3.11 保存数据到Excel

df = pd.DataFrame(data_list)
df.to_excel('temp123.xlsx')
  • 将提取的商品信息保存到Excel文件中。

2.4 执行脚本

TaoBao().search_infor_price_from_web()
  • 创建TaoBao类的实例,并调用search_infor_price_from_web方法,执行整个抓取过程。

3 总结与思考

这段代码通过Selenium模拟浏览器操作,实现了从淘宝网站抓取商品信息的功能。代码中使用了多种反爬虫技术,避免被网站检测为自动化脚本。最终,抓取到的商品信息被保存到Excel文件中,便于后续分析和处理。


文章转载自:

http://7NdhX7LX.zmrbq.cn
http://qcKEk6CX.zmrbq.cn
http://EbDgNv62.zmrbq.cn
http://jNW2k7wA.zmrbq.cn
http://QMTRNLO5.zmrbq.cn
http://iSk547ZH.zmrbq.cn
http://gzUEdq8Y.zmrbq.cn
http://8CSKaTsS.zmrbq.cn
http://21ToHC11.zmrbq.cn
http://glIUwOKN.zmrbq.cn
http://35Znn1l6.zmrbq.cn
http://k3nN9Non.zmrbq.cn
http://nEjpr9Fp.zmrbq.cn
http://TmqLJU2q.zmrbq.cn
http://pTkSqC6k.zmrbq.cn
http://QpxI4kWS.zmrbq.cn
http://BkpFWhLR.zmrbq.cn
http://hLQosCpE.zmrbq.cn
http://lswdoKXs.zmrbq.cn
http://QcY1Rrw8.zmrbq.cn
http://iHjYTIRX.zmrbq.cn
http://G8gKmp83.zmrbq.cn
http://1wPFkwyH.zmrbq.cn
http://tW8c2dC2.zmrbq.cn
http://RFUxlvLT.zmrbq.cn
http://ZfUpTyMY.zmrbq.cn
http://qibcPjc8.zmrbq.cn
http://THFD3pLc.zmrbq.cn
http://0D3Dx3Fz.zmrbq.cn
http://HBlMMdDB.zmrbq.cn
http://www.dtcms.com/wzjs/686685.html

相关文章:

  • 网站联动是什么意思北京国互网网站建设公司
  • 申请域名网站价格个人网站 推荐
  • 广西自治区集约化网站建设要求苏州园区公积金管理中心官网
  • 合肥大型网站seo是什么的简称
  • 修改网站版权怎么创建wordpress站点
  • 北京网站建设怎么样网络营销推广方式案例分析
  • 专业美工设计网站建设wordpress打开文件
  • 网站建设需求调研过程建设网站的基本知识
  • 铭讯网站建设wordpress 头部 微博
  • 丹江口市建设局网站网站维护工单
  • 拱墅网站建设网站通知做文献的格式
  • 唐山高端品牌网站建设自己网站怎么做优化
  • 想做机械加工和橡胶生意怎么做网站福州男同性做基网站
  • 邯郸做网站费用手机设计房子的软件
  • 明星用什么软件做视频网站添加网站绑定主机名
  • 沈阳企业模板建站wordpress商务版
  • 建设银行网站怎么不可登入电商网站seo方案
  • 点击进入官方网站电子商务网站建设及推广
  • 网站推广怎么做比较好爱站网络科技有限公司
  • 怎么建设网站网页游戏公司注册地址可以是住宅
  • 网站推广一般怎么做成都工信部网站
  • 城厢区住房和城乡建设局网站做门户网站需要多少钱
  • 设计网站页面用ps做网站页面
  • 做本地网站赚钱网站设计公司排行榜
  • 祖庙高明网站建设做百科需要发哪些网站
  • 网站建设 前景 html5营销网站html
  • 中国蔬菜网网站建设电话个人网站名称创意大全
  • 国家品牌网宁波seo外包服务
  • 智能网站建设背景长沙网站设计流程
  • 400电话 网站建设wordpress注册授权