龙空技术网

Python爬虫实战,selenium模拟登录,Python实现抓取某东商品数据

小三十三 471

前言:

现在大家对“python抓取app数据”大概比较着重,大家都想要学习一些“python抓取app数据”的相关知识。那么小编也在网摘上搜集了一些有关“python抓取app数据””的相关知识,希望我们能喜欢,看官们快快来学习一下吧!

前言

今天为大家带来利用Python模拟登录京东书籍商品数据抓取,废话不多说。

Let's start happily

开发工具

Python版本: 3.6.4

相关模块:

selenium模块

time模块

requests模块

lxml模块

csv模块

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

思路分析

本文以爬虫抓取京东书籍商品,讲解如何爬取模拟登录京东抓取数据

1.获取页面信息

class JdSpider(object):    def __init__(self):        self.i = 0        self.url = ";        self.browser = webdriver.Chrome(r"C:/python-3.9.6-embed-amd64/Application/chromedriver.exe")
2.获取页面信息 --到具体商品页面
def get_html(self):        # self.browser.set_window_size(1200, 800)         # 控制浏览器大小        # self.browser.back()                           # 浏览器后退        # self.browser.forward()                        # 浏览器前进        self.browser.get(self.url)        self.browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",                                     {                                         "source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})        a = input('请输入你想要的商品:')        self.browser.find_element_by_xpath('//*[@id="key"]').send_keys(a)
3.解析页面
 # 解析页面    def parse_html(self):        # 把下拉菜单拉到底部,执行JS脚本        self.browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')        time.sleep(2)        # 提取所有商品节点对象列表 li列表        li_list = self.browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li')

结果展示

4.创建csv,写入header

  # 创建csv        fp = open('京东商品信息爬取.csv', 'wt', newline='', encoding='utf-8')        # 写入header        writer = csv.writer(fp)        writer.writerow(('价格', '评价', '出版社', '商品信息',))        for li in li_list:            info_list = li.text.split('\n')            if info_list[0].startswith('每满') or info_list[1].startswith('¥'):                price = info_list[1]                name = info_list[2]                comment = info_list[3]                shop = info_list[4]            elif info_list[0].startswith('单件'):                price = info_list[3]                name = info_list[4]                comment = info_list[5]                shop = info_list[6]            else:                price = info_list[0]                name = info_list[1]                comment = info_list[2]                shop = info_list[3]            writer.writerow((price, comment, shop, name))            print(price, comment, shop, name)

结果展示

标签: #python抓取app数据