爬取京东商品信息并进行简单的打包

作者: 锋小刀
微信搜索【职场办公杂技】关注我的公众号查看更多内容

目录

    • 前言
    • 实战代码
    • 程序打包
    • 小结


前言

今天就教大家进行程序打包,写个简单的爬虫程序,爬取某东商品数据,并进行打包,让没有python环境的电脑也可以运行。
##分析网页
某东网址:

https://www.jd.com/

该网址是一个动态网站,我们打开开发者工具,进入Network→XHR界面,然后在搜索框输入任一商品,这样会加载出一条get请求的链接。
爬取京东商品信息并进行简单的打包_第1张图片
向下拉动网页,接着他会再次加载出一条链接,说明一个页面会更新两条链接;当点击下一页时,page会也会随之变动。
爬取京东商品信息并进行简单的打包_第2张图片
因为两条链接携带的参数不同以及后期要打包程序,所以需要适当修改,删除些不用的参数。

https://search.jd.com/s_new.php?qrst=1&suggest=1.his.0.0&stock=1&page=1&s=1

实战代码

导入模块。

import pandas as pd
import requests
from lxml import etree
import time

创建DataFrame,构建headers,伪装请求头,防止被服务器识别。

df = pd.DataFrame()
headers = {
     
    'cookie': '你的cookie',
    'referer': 'https://search.jd.com/Search?keyword=%E6%AF%9B%E8%A1%A3&wq=%E6%AF%9B%E8%A1%A3&page=1&s=1&click=0',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
}

构建params参数以及爬取页数,这里使用了input()交互式,可以灵活的想要搜索的商品和想要爬取多少页,然后传入相关参数进行数据的请求。

keyword = input('请输入你要搜索的商品:')
params = {
     
        'keyword': keyword,
        'wd': keyword
    }
s = 1
a = input('请输入你要爬取的页数:')
# int转换为数值类型
for page in range(1, int(a)):
    print('===================正在爬取第{}页数据====================='.format(page))
    url = f'https://search.jd.com/s_new.php?qrst=1&suggest=1.his.0.0&stock=1&page={page}&s={s}'
    res_html = requests.get(url=url, headers=headers, params=params).text
     ul = etree_html.xpath('.//ul[@class="gl-warp clearfix"]/li[@ware-type="10"]')
    for li in ul:
        title = ''.join(li.xpath('./div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/em/text()')).strip()  # 商品名
        strong = ''.join(li.xpath('./div[@class="gl-i-wrap"]/div[@class="p-price"]/strong[@data-done="1"]//text()')).strip()  # 价格
        dianMing = ''.join(li.xpath('./div[@class="gl-i-wrap"]/div[@class="p-shop"]/span/a/text()'))  # 店名
        fuWu = ''.join(li.xpath('./div/div[@class="p-icons"]/i/@data-tips'))  # 服务
        print(title)
        data = pd.DataFrame({
     '商品名称': [title], '商品价格': [strong], '店铺名称': [dianMing], '店铺服务': [fuWu]})
        df = pd.concat([df, data])
    time.sleep(1)
    s += 26
df.to_csv('京东商品.csv', encoding='utf-8', index=False, index_label=False)

当程序运行时他就会出现以下字段,然后输入相关内容即可:
在这里插入图片描述

程序打包

数据的提取以前都讲解过,这里就不细讲了。

打包需要用到一个库-pyinstaller,安装只需要在终端输入以下命令:

pip install pyinstaller

pyinstaller打包命令有很多条,我比较常用下面这条:

pyinstaller -F py文件名称

他的使用也很简单,我们需要先在终端进入写好的程序所在的目录下。
爬取京东商品信息并进行简单的打包_第3张图片
接着复制上面的命令到终端,直接回车即可运行打包。
爬取京东商品信息并进行简单的打包_第4张图片
打包完成后会生成多个文件,而可执行 exe 程序就在dist文件下,我们直接双击即可运行程序,然后输入想要搜索的商品和想要爬取多少页。
爬取京东商品信息并进行简单的打包_第5张图片

小结

1、写爬虫还是需要仔细分析网页,分析好网页是成功的一半了。
2、程序打包在工作中还是很常用的,打包好的程序可以在没有python环境下的电脑运行。

本文图片以及文本仅供学习、交流使用,不做商业用途,如有问题请及时联系我们以作处理。

你可能感兴趣的:(python爬虫,python)