Advertisement

python爬虫-京东商品评论

阅读量:

该文本描述了一种通过Python爬虫技术从京东某商品页面提取并保存商品评论的方法和流程:1. 使用selenium库模拟浏览器操作并打开京东商品详情页2. 初始化BeautifulSoup进行网页内容解析3. 通过JavaScript滚动至网页底部以获取所有评论4. 使用正则表达式和标签匹配提取每条评论文本5. 将爬取的评论存储在一个列表中6. 处理分页功能(如点击下一页按钮)以获取所有页数的评论7. 将所有收集到的评论数据存储为DataFrame格式后导出为CSV文件该方法可以实现从京东网站批量爬取商品评价并进行后续的数据分析或展示工作。

使用数据采集工具从京东某商品的评论中提取信息,并将其存储在一个本地数据库中

复制代码
    import random
    from selenium import webdriver
    from selenium.webdriver import ActionChains
    from selenium.webdriver.support.ui import WebDriverWait
    import time
    from bs4 import BeautifulSoup
    import pandas as pd
    from selenium.webdriver.common.keys import Keys
    
    browser = webdriver.Chrome(executable_path='C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')
    browser.get('https://item.jd.com/100007264815.html')
    
    
    
    browser.switch_to.window(browser.window_handles[0])
    time.sleep(3)
    browser.switch_to.window(browser.window_handles[-1])
    
    comments = []
    
    for k in range (0,100):
    
    try:
        js = "var q=document.documentElement.scrollTop=1000000"
        browser.execute_script(js)  # 使用javascript命令,网页下拉到最底部
        elements = browser.find_element_by_xpath('//*[@id="comment-4"]')
        InnerElement = elements.get_attribute('innerHTML')
        soup = BeautifulSoup(InnerElement, 'lxml')
        comments_data = soup.find_all('p', {'class': 'comment-con'})
    
        if not comments_data:
            print('无评论')
            break
    
        for j in comments_data:
            comments.append(j.get_text())
            print(comments)
        time.sleep(random.random() * 5 + 1)
    
    except Exception as e:
        print(e)
    
    try:
        element = browser.find_element_by_css_selector(
            '#comment-4 > div.com-table-footer > div > div > a.ui-pager-next')
    
        browser.execute_script("arguments[0].click();",
                               element)  # comment-4 > div.com-table-footer > div > div > a.ui-pager-next
        time.sleep(1)
    except Exception as e:
        print(e)
    df = pd.DataFrame(comments)
    
    df.to_csv('狗粮好评.csv', index=False, encoding='utf_8_sig')
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~