设为首页 加入收藏

TOP

【Python爬虫案例学习】Python爬取淘宝店铺和评论(一)
2019-08-15 00:09:58 】 浏览:176
Tags:Python 爬虫 案例 学习 店铺 评论

安装开发需要的一些库

(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类型,将数据每次添加一个到数组中,当数组的长度等于用户想要显示最大行数时,对其数组中的数据从大到小进行排序,接下来,每当读取一个数据之后,就对数组中最小的那个进行比较,如果比起小,就跳过,否则,对该数据进

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【Python爬虫案例学习2】python多.. 下一篇面向对象:类空间问题以及类之间的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目