LiuMingyang_lu 2024-04-11 10:35 采纳率: 0%
浏览 22

监听未启动或已暂停pycharm如何解决

from DrissionPage import ChromiumPage#自动化模块
#导入正则表达式
import re
#导入json模块
import json
#导入csv
import csv
#到入时间模块
import time
f = open('data.csv', mode='w', encoding='utf-8',newline='')
#写入字典
csv_writer = csv.DictWriter(f,fieldnames= [
    '标题',
    '价格',
    '地区',
    '销量',
])
#写入表头
csv_writer.writeheader()
driver = ChromiumPage()#打开浏览器
driver.get('https://s.taobao.com/search?q=')#访问网站
driver.ele('css:#q').input('办公')#商品名/类
driver.ele('css:.btn-search').click()#点击搜索drive
for page in range(100):
 time.sleep(2)#等待两秒
 driver.scroll.to_bottom()#网页到底
 resp = driver.listen.wait()#等待数据包加载

img

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-11 10:35
    关注

    引自免费微信小程序:皆我百晓生

    在您提供的Python代码中,driver.listen.wait()这一行似乎是一个错误,因为PyChromedriver(用于控制Chrome浏览器的WebDriver实现)并没有提供一个名为listen.wait()的方法。看起来您可能想监听网络请求,这通常是在进行自动化测试或抓取动态加载内容时使用的功能。

    要实现这个目标,您可以使用像Selenium Wire这样的第三方库,它扩展了Selenium的功能,允许您拦截、查看和修改网络请求。首先,你需要安装selenium-wire库,可以使用pip进行安装:

    pip install selenium-wire
    

    然后,替换您的原始代码中的部分导入和初始化驱动器的部分,以便使用Selenium Wire。以下是修改后的代码片段:

    from seleniumwire import webdriver  # 使用Selenium Wire替换ChromiumPage
    import re
    import json
    import csv
    import time
    
    # ...其他导入和变量定义保持不变...
    
    def process_page(driver):
        data_list = []
        for item in driver.find_elements_by_css_selector(".J_Item"):
            title = item.find_element_by_css_selector(".title").text
            price = item.find_element_by_css_selector(".price").text
            region = item.find_element_by_css_selector(".location").text
            sales = item.find_element_by_css_selector(".sales-num").text
    
            data_list.append({
                '标题': title,
                '价格': price,
                '地区': region,
                '销量': sales
            })
    
        return data_list
    
    with webdriver.Chrome() as driver:
        driver.get('https://s.taobao.com/search?q=')  # 访问网站
        driver.execute_script("document.querySelector('#q').value = '办公';")  # 设置商品名/类
        driver.find_element_by_css_selector('.btn-search').click()  # 点击搜索
    
        for page in range(100):
            time.sleep(2)  # 等待两秒
            driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")  # 滚动到底部
            data_list = process_page(driver)
    
            with open('data.csv', mode='a', encoding='utf-8', newline='') as f:  # 'a'模式追加写入
                csv_writer = csv.DictWriter(f, fieldnames=['标题', '价格', '地区', '销量'])
                for row in data_list:
                    csv_writer.writerow(row)
    

    这段代码将使用Selenium Wire捕获页面上的元素并将其添加到CSV文件中,而无需尝试监听网络请求。注意,这里我们没有专门处理网络请求,而是通过遍历页面上的每个商品元素来获取信息。如果您确实需要监听特定的网络请求,可以查阅Selenium Wire文档,了解如何设置拦截器(Interceptors)。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 4月11日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件