安装开发需要的一些库

(1) 安装mysql 的驱动:在Windows上按win+r输入cmd打开命令行,输入命令pip install pymysql,回车即可。

(2) 安装自动化测试的驱动selenium:在命令行中输入pip install selenium回车。

(3) 安装标签解析库pyquery: 在命令行中输入pip install pyquery回车。

(4) Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,下载anaconda,安装后配置环境变量,在path中添加E:\Anaconda3\anaconda\Library\bin,重启电脑使环境变量生效,安装jieba库,在命令行中输入pip install jieba回车。

(5) 下载ChromeDriver,官方网址为:http://chromedriver.storage.googleapis.com/

index.html,并将chromedriver.exe放在Python安装目录的Scripts文件夹下。

实现

  • 爬取数据的实现主要是用到了Pyquery、selenium库,以下代码主要实现了对淘宝的检索、翻页和对数据的提取。
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''
# 设置网站最大响应时间
wait=WebDriverWait(driver,50)
class TaoBaoSearch:
# 初始化,默认搜索为None,创建数据库连接
def __init__(self,search=None):
self.name=search
self.mysql=to.Data_oper()
# 对淘宝网的搜索
def search(self):
# 设置源网站,这里设置淘宝网站为源网站
driver.get("https://www.taobao.com/")#J_TSearchForm > div.search-button > button
# “q”为淘宝首页输入框的标签,这里定位到该输入框,并设置要搜索商品的名字
imput=driver.find_element_by_id("q")
imput.send_keys(self.name)
# wait.until()该方法的作用是加载出来搜索结果总页数之后开始往下执行
pageText=wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > div.total")))
total=re.search("\d+",pageText.text)
# 该方法返回搜索结果的总页数
return total.group(0)
# 提取出相应的数据
def parseHtml(self):
html=driver.page_source#获取网页源代码
doc=qp(html)
# 得到到class为m-itemlist下面的class是.items .item的div
iteams=doc(".m-itemlist .items .item").items()
# 根据标签选择器提取出需要的数据
for item in iteams:
# src=item(".pic .img").attr("src")
src=item(".row .J_ClickStat").attr("href") # 该店铺的链接
person=item(".row .deal-cnt").text() #购买该商品的人数
title=item(".row .J_ClickStat").text().split("\n") # 标题
shop=item(".row .shopname").text() # 商品
location=item(".row .location").text() # 地区
# 将提取到的数据放到数组中保存起来
data=[]
data.append(str(title[0].strip()))
data.append(str(shop.strip()))
data.append(str(location.strip()))
# 剔除无用字
data.append(str(person[:-3].strip()))
data.append(str(src).strip())
# 调用mysql.insert_data()方法将提取到的数据插入到数据库中
self.mysql.insert_data(data)
# 对网页进行翻页的方法
def nextpage(self,pagenumber):
# 定位到翻页的按钮前的输入框,也就是对其进行跳转
pageInput=driver.find_element_by_css_selector("#mainsrp-pager > div > div > div > div.form > input")
pageInput.clear()
pageInput.send_keys(pagenumber)
# 定位到跳转按钮,对其进行翻页
pageButton=driver.find_element_by_css_selector("#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit")
pageButton.click()
wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR,"#mainsrp-pager > div > div > div > ul > li.item.active > span"),str(pagenumber)))
self.parseHtml()
# 定义主函数,调用上面的的方法
def main(self):
total=int(self.search())
for i in range(2,total):
self.nextpage(i)
self.mysql.close()

以下代码是一个排序的算法,其主要作用是在界面上显示多少行数据,主要思路为:根据用户输入的数字创建一个数组,读取数据库中得到数据,分离出来购买人数并转换成int类型,将数据每次添加一个到数组中,当数组的长度等于用户想要显示最大行数时,对其数组中的数据从大到小进行排序,接下来,每当读取一个数据之后,就对数组中最小的那个进行比较,如果比起小,就跳过,否则,对该数据进行插入操作,并删除之前最小的那个数据,最后数组中保存的就是购买人数最多的前n条数据。

主要代码如下:

'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''
#对数据进行排序,data为购买人数
def shot_data(self,data,i=10): # i为用户想要显示的最大行数,默认为10行
top=[]
if i>len(data):
i=len(data)
for x in data:
if len(top)<i: # 控制数组的长度,另其大小等于i
top.append(x)
if len(top)==i:
top.sort(reverse=True) # 数组内的数据进行排序
else:
l=len(top)
y=len(top)
t=1
if x>top[l-1]: # 判断其数值是否大于数组内的最小值
while x>top[l-t] and y>0: # 控制循环条件
t+=1
y-=1
if y!=0: # y的值若是==0,那么该数值就是最大值
for c in range(1,t):
top[l-c]=top[l-c-1]
top[l-t+1]=x
else:
for c in range(1,t):
top[l-c]=top[l-c-1]
top[0]=x
return top # 返回装有最大的前i个数的数组

以下代码是对评论进行关键词的提取,用到了jieba库中的一些方法。

主要代码如下:

def dis_an(self):
# 清空显示界面
self.txtMess.delete(1.0,END)
t=to.Data_oper()
# 得到数据库中的存储信息
test=t.dis_only_discuss()
# 定义字符串adg,v
adg=""
v=""
# 对评论进行分割并标注词性
word=psg.cut(test)
# w为词意,f为词性
for w,f in word:
# 判断词性是否为形容词
if f.startswith('a'):
print(w)
adg=adg+","+w
# 判断词性是否为动词
elif f.startswith('v'):
v=v+","+w
# 根据该词的权重提取出前5个词
tags=jieba.analyse.extract_tags(adg,topK=5)
tags1=jieba.analyse.extract_tags(v,topK=5)

【Python爬虫案例学习】Python爬取淘宝店铺和评论的更多相关文章

  1. Python爬取淘宝店铺和评论

    1 安装开发需要的一些库 (1) 安装mysql 的驱动:在Windows上按win+r输入cmd打开命令行,输入命令pip install pymysql,回车即可. (2) 安装自动化测试的驱动s ...

  2. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  3. 一次Python爬虫的修改,抓取淘宝MM照片

    这篇文章是2016-3-2写的,时隔一年了,淘宝的验证机制也有了改变.代码不一定有效,保留着作为一种代码学习. 崔大哥这有篇>>小白爬虫第一弹之抓取妹子图 不失为学python爬虫的绝佳教 ...

  4. python3编写网络爬虫16-使用selenium 爬取淘宝商品信息

    一.使用selenium 模拟浏览器操作爬取淘宝商品信息 之前我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过A ...

  5. Python网络爬虫(6)--爬取淘宝模特图片

    经过前面的一些基础学习,我们大致知道了如何爬取并解析一个网页中的信息,这里我们来做一个更有意思的事情,爬取MM图片并保存.网址为https://mm.taobao.com/json/request_t ...

  6. python 网路爬虫(二) 爬取淘宝里的手机报价并以价格排序

    今天要写的是之前写过的一个程序,然后把它整理下,巩固下知识点,并对之前的代码进行一些改进. 今天要爬取的是淘宝里的关于手机的报价的信息,并按照自己想要价格来筛选. 要是有什么问题希望大佬能指出我的错误 ...

  7. python爬虫学习(三):使用re库爬取&quot;淘宝商品&quot;,并把结果写进txt文件

    第二个例子是使用requests库+re库爬取淘宝搜索商品页面的商品信息 (1)分析网页源码 打开淘宝,输入关键字“python”,然后搜索,显示如下搜索结果 从url连接中可以得到搜索商品的关键字是 ...

  8. 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

  9. Python 爬取淘宝商品数据挖掘分析实战

    Python 爬取淘宝商品数据挖掘分析实战 项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 爬取淘宝商品 ...

随机推荐

  1. pdf2htmlEx安装及测试

    pdf2htmEx转换效果优秀,可以将pdf转换为html文件,转换速度很快 有两种输出形式, 1.一个pdf对应一个html文件,转换出来的html文件较大 2.一个pdf对应多个html页面,且可 ...

  2. 【HDU1730】Northcott Game(Nim问题)

    Northcott Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. 让C#轻松实现读写锁分离--封装ReaderWriterLockSlim

    ReaderWriterLockSlim 类 表示用于管理资源访问的锁定状态,可实现多线程读取或进行独占式写入访问. 使用 ReaderWriterLockSlim 来保护由多个线程读取但每次只采用一 ...

  4. Nginx做NodeJS应用负载均衡配置实例

    这篇文章主要介绍了Nginx做NodeJS应用负载均衡配置实例,本文直接给出配置实例,需要的朋友可以参考下. 负载均衡可以把用户的请求分摊到多个服务器上进行处理,从而实现了对海量用户的访问支持.负载均 ...

  5. ajax该什么时候用

    第一.请求的提交是为了页面数据的显示,这时候用户一般不希望看到页面的刷新,是使用AJAX的一个最佳时候. 第二.如果请求提交后,用户能从页面感觉到提交结果,这时候,也最好不要有页面刷新,推荐使用AJA ...

  6. JS中的控制函数调用:call(),apply()和bind()

    所有的函数都具有call(),apply()和bind()方法.它们可以在执行方法的时候用一个值指向this,并改变面向对象的作用域. apply方法: 以下的两种表达式是等价的: func(arg1 ...

  7. .net简单页面后台绑定下拉框,按钮,分页 前台aspx页面

    一.aspx页面 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Updat ...

  8. 堡垒机之paramiko模块

    一.paramiko简单介绍 场景预设: 很多运维人员平时进行维护linux/unix主机时候,无非通过ssh到相应主机操作,那么一旦主机有成千上百台,那该如何应对,这时候我们需要批处理工具,基于py ...

  9. 小小知识点(四)——MATLAB如何画等高线图和线性规划约束方程

    MATLAB程序: figure contourf(x,y,data) % 画等高线 hold on plot(x,y(x)) %画线性规划约束方程1 hold on plot(y,x(y)) %画线 ...

  10. 爬虫(猫眼电影+校花网+github+今日头条+拉钩)

    Requests+正则表达式爬取猫眼TOP100榜电影信息 MARK:将信息写入文件解决乱码方法,开启进程池秒爬. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...