当前位置: 首页 > 知识库问答 >
问题:

我想通过selenium webscraping刮评论,并使它的csv文件,但发现很难删除错误。如何删除错误?

庞旺
2023-03-14
import pandas as pd
from bs4 import BeautifulSoup
from time import sleep
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import sqlite3 as sql

urls = []
product_urls = []
list_of_reviews = []


# Each page urls
for i in range(1, 252):
    urls.append(f"https://www.etsy.com/in-en/c/jewelry/earrings/ear-jackets-and-climbers?ref=pagination&explicit=1&page={i}")

# Scraping each product's urls | 16,064 products
for url in urls:
    driver = webdriver.Chrome(executable_path=r"C:\Users\dell\Downloads\chromedriver_win32\chromedriver.exe")
    driver.get(url)
    sleep(5)
    for i in range(1, 65):
        product = WebDriverWait(driver, 20).until(EC.presence_of_element_located(By.XPATH, f'//*[@id="content"]/div/div[1]/div/div[3]/div[2]/div[2]/div[1]/div/div/ul/li[{i}]/div/a'))
        product_urls.append(product.get_attribute('href'))

# Scraping each product's reviews     
driver = webdriver.Chrome(executable_path='chromedriver.exe')  
for product_url in product_urls[15:]:
    try:
        driver.get(product_url)
        sleep(5)
        html = driver.page_source
        soup = BeautifulSoup(html,'html')
        for i in range(4):
            try:
                list_of_reviews.append(soup.select(f'#review-preview-toggle-{i}')[0].getText().strip())
            except:
                continue
        while(True):
            try:
                next_button = driver.find_element_by_xpath('//*[@id="reviews"]/div[2]/nav/ul/li[position() = last()]/a[contains(@href, "https")]')
                if next_button != None:
                    next_button.click()
                    sleep(5)
                    html = driver.page_source
                    soup = BeautifulSoup(html,'html')
                    for i in range(4):
                        try: 
                            list_of_reviews.append(soup.select(f'#review-preview-toggle-{i}')[0].getText().strip())
                        except:
                            continue
            except Exception as e:
                print('finsish : ', e)
                break
    except:
        continue

scrapedReviewsAll = pd.DataFrame(list_of_reviews, index = None, columns = ['reviews'])         
scrapedReviewsAll.to_csv('scrapedReviewsAll.csv')
df = pd.read_csv('scrapedReviewsAll.csv')
conn = sql.connect('scrapedReviewsAll.db')
df.to_sql('scrapedReviewsAllTable', conn)       
  

typeerror:init()接受2个位置参数,但3个参数是在行product=WebDriverWait(driver,20)中给出的。直到(ec.presence_of_element_locited(by.xpath(f'//*[@id=“content”]/div/div[1]/div/div[3]/div[2]/div[1]/div/div[1]/div/div/ul/li[{i}]/div/a')),我在运行程序时一直得到这个错误..这个typeerror是如何解决的??

共有1个答案

居晗日
2023-03-14

尝试将刮取href的代码改为如下:

# Scraping each product's urls | 16,064 products
for url in urls:
    driver = driver = webdriver.Chrome(executable_path=r"C:\Users\dell\Downloads\chromedriver_win32\chromedriver.exe")
    driver.get(url)
    sleep(5)
    for i in range(1, 65):
        product = driver.find_element_by_xpath("//div[@id='content']//div[contains(@class,'search-listings-group')]//ul//li['"+str(i)+"']/div/a")
        product_urls.append(product.get_attribute('href'))
 类似资料:
  • 请求header DELETE /v1/activity/{频道id}/comments/{评论id} Authorization:Bearer {ACCESS TOKEN} Content-Type:application/json 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请将"{评论id}"替换您需要获取的评论id 请将"{频道id}"替换您需要获取的

  • 问题内容: 如果文件位于另一个目录中,如何使用PHP从服务器中删除文件? 这是我的页面布局: (此文件将删除我对数据库的所有条目,并且还应删除相关文件) (文件所在的位置。) 我正在使用的功能: 但这总是给我一个错误,该文件不存在。有任何想法吗? 问题答案: 以下应该有帮助 —返回规范化的绝对​​路径名 —告诉文件名是否可写 —删除文件 通过realpath运行文件路径,然后检查返回的路径是否可写

  • 您好,我正在尝试在我的Web服务中运行一个查询,但是一个查询在范围内的函数会从零开始中断。 我的代码: 错误: 获取请求失败请求失败-- 类型异常报告 Message内部服务器错误 描述服务器遇到内部错误,无法满足此请求。 例外 javax.servlet.ServletException:java.lang.NullPointerException 根本原因 JAVAlang.NullPoint

  • 问题内容: 我刚刚在android应用程序中编写了一个函数,该函数使用Java中的标准“文件”类删除文件。即: 尽管上面的过程很简单,但我一直想知道通过“ ContentResolver”执行该操作是否有任何好处。任何意见,将不胜感激。 干杯, 杰瑞德 ------------------------------------------编辑------- 这是通过Content Resolver删

  • 问题内容: 我已经能够使用该站点上多个用户的输入来使用python创建一个csv,并希望对您的帖子表示感谢。我现在很困惑,将发表我的第一个问题。 我的input.csv看起来像这样: 我正在尝试删除“年份”列及其所有条目。从1960年到2010年,总共有40多个条目。 问题答案: 顺便说一句,循环可以删除,但并没有真正简化。 同样,您可以以直截了当的方式坚持删除列的要求。我发现这通常是一个不好的策

  • 本文向大家介绍React实现评论的添加和删除,包括了React实现评论的添加和删除的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了React实现评论添加和删除的具体代码,供大家参考,具体内容如下 一、效果图 二、需求描述 1. 手动输入用户名和评论内容,点击提交;输入内容被追加到右侧评论列表; 2.  点击评论列表的“删除”按钮,弹框提示确定删除用户“xx”; 3. 点击“确定”,“