练习:selenium 爬取京东的电脑商品100页的数据并保存到csv文件中

练习:selenium 爬取京东的电脑商品100页的数据并保存到csv文件中

from selenium.webdriver import Chrome, ChromeOptions
import time, csv, os
from bs4 import BeautifulSoup


def analysis_data(html):
    soup = BeautifulSoup(html, 'lxml')
    goods_li = soup.select('#J_goodsList>ul>li.gl-item')
    all_data = []
    for li in goods_li:
        name = li.select_one('.p-name>a').attrs['title']
        price = li.select_one('.p-price i').text
        comment_count = li.select_one('.p-commit a').text
        shop_name = li.select_one('.p-shop a').attrs['title']
        goods_url = 'https:' + li.select_one('.p-name>a').attrs['href']
        all_data.append([name, price, comment_count, shop_name, goods_url])

    result = os.path.exists('files/电脑.csv')
    with open('files/电脑.csv', 'a', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        if not result:
            writer.writerow(['商品名称', '价格', '评论数', '店铺名', '商品详情地址'])
        writer.writerows(all_data)


def get_net_data():
    options = ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
    b = Chrome('chromedriver.exe',options=options)
    b.implicitly_wait(3)
    b.get('https://www.jd.com')
    b.find_element_by_id('key').send_keys('电脑\n')

    for page in range(5):
        # 滚动
        for _ in range(10):
            b.execute_script('window.scrollBy(0, 800)')
            time.sleep(1)

        # 获取网页源代码, 解析数据
        analysis_data(b.page_source)

        # 点击下一页
        b.find_element_by_class_name('pn-next').click()

    b.close()


if __name__ == '__main__':
    get_net_data()
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿酱不秃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值