首页 > 编程语言 >Python学习日记 2023年8月16日

Python学习日记 2023年8月16日

时间:2023-08-16 17:35:37浏览次数:54  
标签:16 Python selector 2023 element csv find css browser

from selenium import webdriver ##pip install selenium
from time import sleep
import csv

f = open('口红1.csv', mode='a',encoding='utf-8',newline='')
#csv.DictWriter 字典写入
csv_writer = csv.DictWriter(f,fieldnames=[
    '商品',
    '详情',
])
csv_writer.writeheader()  #写入表头

browser = webdriver.Chrome()
browser.get('https://www.jd.com/')
browser.find_element_by_css_selector('#key').send_keys('口红')
browser.find_element_by_css_selector('#search > div > div.form > button').click()
browser.implicitly_wait(10)   #等待网页加载完成再执行,最多等待十秒(也可以小于十秒钟)    time.sleep(10)这个是必须等待10秒后才执行

def drop_down():
    for x in range(1,12, 2):
        sleep(1)
        j = x / 9
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        browser.execute_script(js)

def get_shop_info():
    browser.implicitly_wait(10)
    drop_down()   
    browser_lists = browser.find_elements_by_css_selector('.goods-list-v2 .gl-item ')
    # print(lists)
    for li in browser_lists:
        title = li.find_element_by_css_selector('.p-name ').text
        href = li.find_element_by_css_selector('.p-name  a').get_attribute('href')
        dit = {
            '商品':title,
            '详情':href
        }
        csv_writer.writerow(dit)
for page in range(1,5):
        get_shop_info()
        browser.find_element_by_css_selector('.pn-next').click()

Python操作谷歌浏览器,先进行谷歌浏览器驱动的安装。需要把和自己谷歌浏览器相同版本的驱动放到Python的根目录,

Python目录可以在电脑命令行里查找(where Python)。谷歌浏览器关闭自动更新,不然会因为版本变动造成不能使用。谷歌浏览器驱动下载网址:https://googlechromelabs.github.io/chrome-for-testing/

https://registry.npmmirror.com/binary.html?path=chromedriver/     目前这个两都能正常打开驱动比较齐全。

f = open('口红1.csv', mode='a',encoding='utf-8',newline='')
#csv.DictWriter 字典写入  mode='a',追加写入的方式
csv_writer = csv.DictWriter(f,fieldnames=[
    '商品',
    '详情',
])
csv_writer.writeheader()  #写入表头

newline = “”   csv中的自动换行???   下面的找到的关于这个的解释

  • 写入的时候没有指定newline参数会将\n翻译成系统默认的行分割符(\r\n)
  • 读的时候没有指定newline参数会将行分割符(\r\n)翻译为\n


webdriver 这个版本不一样的话,命令书写方式也不一样,我这个是4.1.0(安装命令pip install selenium==4.1.0)

browser.find_elements_by_css_selector,我一开始这个命令是不生效的就是因为之前的版本命令不是这个格式造成的错误。

def drop_down():
    for x in range(1,12, 2):
        sleep(1)
        j = x / 9
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        browser.execute_script(js)

这个下滑网页是网上找到的一个,适用所有网页吗?还是只能在京东网页使用?(下次试验下)。

browser.find_element_by_css_selector('.pn-next').click()这个是翻页的命令,京东网页是支持按键盘向右的方向键→翻页,那是不是说这个可以替换为键盘输入(键盘输入命令之后可以尝试下)。




标签:16,Python,selector,2023,element,csv,find,css,browser
From: https://blog.51cto.com/u_2469839/7111364

相关文章

  • 2023.08.12 codeforces round 893 div2
    年轻人的第四场div2rank:8217solved:2ratingchange:+31newrating:1354A.Buttons题意:给定a,b,c三种按钮的数量,a按钮只能被Anna按,b按钮只能被Katie按,两个人都可以按c按钮,最后没有按钮可以按的人输,Anna先手,问谁是赢家;两个人肯定优先按c按钮,且Anna是先手,只需比较两人能按的按......
  • 澎峰科技|邀您关注2023 RISC-V中国峰会!
     峰会概览 2023RISC-V中国峰会(RISC-VSummitChina2023)将于8月23日至25日在北京香格里拉饭店举行。本届峰会将以“RISC-V生态共建”为主题,结合当下全球新形势,把握全球新时机,呈现RISC-V全球新观点、新趋势。本届峰会采用“主会议+技术研讨会+展览展示+同期活动”的方式,预......
  • pythonOCC 将二维坐标转化为三维坐标
    OCC当中提供了多种方式转换直接转换为三维坐标使用V3d_View.ProjReferenceAxe()会返回有6个元素的元组,前三位分别对应XYZ例子self._display.View.ProjReferenceAxe()但是,这种方式转换的坐标让人有点摸不着头脑,不推荐 通过求交点获取这种方式会把鼠标限制与某一个面上,......
  • 拿到开发板需要做的事情 -- 配置Python环境
    1.查看系统时间date-R 2.修改系统时间windows上时间项目时间正常,Ubuntu16.04上时间错误-贾斯丁哔哔-博客园(cnblogs.com) 3.安装pip3sudoapt-getupdatesudoapt-getinstallpython3-pip ......
  • python类型标注self
    起因假设有如下代码,我想标注类方法的返回值为自己本身classQueue:def__init__(self):self.items=[]defenqueue(self,item)->Queue:self.items.append(item)returnself用Queue来标注返回值类型,但是呢,运行时Python会报错Traceb......
  • CF1648E 题解
    就是\(m\)组询问补图的最小生成树上的树链最大值。有两种基本思路求这棵树。第一种,Kruskal,基于找到最小的边使两端点不连通。考虑补图中\((x,y)\)的边权,它是原图最小生成树上的树链最大值。从小到大枚举补图的边,相当于从小到大枚举原图最小生成树的边\((u,v,w)\),然后:令原图......
  • 海泰密码全能力 赋能业务全场景|2023年商密大会海泰方圆完美收官
    2023商用密码大会8月11日,为期三天的2023年商用密码大会圆满举办。作为密码界万众瞩目的一场盛会,此次商密大会吸引了300多家业内主流的密码厂商参展、四万多人次参观创历史新高。海泰方圆重磅亮相,全面展示了公司前沿技术、拳头产品、精品方案,充分展现了海泰方圆在百行百业数字化转型......
  • python中自定义类对象json字符串化的方法
    1.用json或者simplejson就可以2.定义转换函数:defconvert_to_builtin_type(obj):print'default(',repr(obj),')'#把MyObj对象转换成dict类型的对象d={}d.update(obj.__dict__)returnd 3.定义类classObject():name=""size=0def__init__(......
  • 2023商用密码大会|海泰方圆发布密境新品牌及多款重磅产品
    8月10日,在北京商用密码行业协会展区-展中展活动上,海泰方圆重磅发布了数据安全品牌“密境”,并隆重推出了密境隐私计算服务平台、密境数据安全沙箱、红莲花云浏览器三款拳头产品。海泰密境:以密码之力,守护您的安全之境海泰方圆产品总监Peter孙发表了《密码技术驱动隐私计算要素流通服......
  • python不同包之间调用提示不存在
     python不同包之间调用提示不存在 在file-setting-project-projectSources,把包放入到Sources中 再次查看,正常 ......