python关于一次淘宝商品信息的爬虫

基于淘宝商品信息的一次爬虫

暑期在家看了慕课嵩天老师的关于淘宝商品信息的爬虫,耐不住寂寞也来试试就,所以就有这次爬虫。
先看结果 嘿嘿 搞了好久才搞好的。
在这里插入图片描述
方法:利用python实现爬取淘宝某具体商品信息,再将其数据实现持久化。

一: 工具和环境

环境:python3

第三方模块:requests , re ,pandas

IDE: Pycharm

浏览器:QQ浏览器(本人Chrome 暂时用不了)

这些安装全部跳过,直接来干货!!!

二:下面代码

// Auther :Dath
// 2019/7/27
import requests
import re
import pandas as pd


def GetHtmlText(url, headers,cookies):
    try:
        r = requests.get(url, headers = headers , timeout = 30 , cookies = cookies)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        print("页面访问成功 ")

        #print(r.text)
        return r.text
    except:
        return "页面访问失败"


def GetGoodsList(html, ulist):
    #print(html)
    try:

        Raw_Ti = re.findall(r'\"raw_title\"\:\".*?\"',html)  #获得标题
        View_Pr = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)  #获得价格
        Item_loc = re.findall(r'\"item_loc\"\:\".*?\"',html)    #获得商家地点
        View_Sales = re.findall(r'\"view_sales\"\:\".*?\"',html) #获得购买人数
        Nick = re.findall(r'\"nick\"\:\".*?\"',html) #获得店铺名称
        print()
        for i in range(len(Raw_Ti)):
            title = eval(Raw_Ti[i].split(':')[1])
            price = eval(View_Pr[i].split(':')[1])
            loc = eval(Item_loc[i].split(':')[1])
            sales = eval(View_Sales[i].split(':')[1])
            nick = eval(Nick[i].split(':')[1])
            ulist.append([title , price , loc , sales , nick])


    except:
        print("页面重新定向到淘宝登陆界面")
    print(ulist)


def WriteToFile(ulist):
    name  = ["标题" , "价格" , "地点" , "购买人数" , "店铺"]

    test = pd.DataFrame(columns=name, data=ulist)

    test.to_csv(r'C:\Users\Administrator\Desktop\淘宝人工智能商品信息2.csv', index=0)
def main():
    uinfo = []
    for i in range(3):

        headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) Ap'
            'pleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 QQBrowser/10.4.3587.400'}

        cookies = {'cookie':'*****************************************'}


        url = 'https://s.taobao.com/search?ie=utf8&initiative_id=staobaoz_20190724&stats_click=sear' \
          'ch_radio_all%3A1&js=1&imgfile=&q=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD&suggest=history_2&_input_charset=utf-8&wq=&' \
          'suggest_query=&source=suggest&bcoffset= ' + str(3 - (3*i) ) + '&ntoffset=' + str(3 - (3*i) ) + '&p4ppushleft=1%2C48&s=' + str(44 * i)
        print("页面URL是:"+ url)
        html = GetHtmlText(url, headers , cookies)
        GetGoodsList(html, uinfo)
    WriteToFile(uinfo)

main()

1:关于headers 和 cookies(模拟浏览器上网)

headers 和 cookies 在淘宝中 打开你所要爬取的界面 F12 进入开发者权限

在这里插入图片描述
在这里插入图片描述
找到headers 和 cookies 内容后将内容复制添加进去 根据代码查看如果添加

因为淘宝有反爬虫机制,如果是一个陌生的URL会导致跳到登陆界面。这是嵩天老师没有讲到的 毕竟当时还没有出来
所以我为了解决这个问题就有了两个思路
第一利用cookies的内容来记住你的登陆信息。淘宝将密码加密存入到cookies中 ,利用cookies可以防止跳转到登陆界面
第二利用selenium库 但是我不会,就没用

三: 代码结果

在这里插入图片描述

四:代码思路

本次一共使用了三个函数GetHtmlText() ,  GetGoodsList() , WriteToFile()  和一个主函数main()

第一个函数GetHtmlText() 获取网页的源代码。因为源代码是这样的所以用
正则表达式 re来处理比较容易 当然了BeautifulSoup 库也是可以的
在这里插入图片描述
主要注意的就是cookies值一定要是你登陆淘宝后的cookies的值不然会提取不到Text内容

**第二个函数 GetGoodsList()**将利用正则表达式匹配到的内容加入到一个二维列表中

第三个函数WriteToFile() 将列表中的内容写入到csv文件中

test.to_csv(r'C:\Users\Administrator\Desktop\淘宝人工智能商品信息1.csv', index=0

pandas库比较简单毕竟处理csv文件

主函数main()就是整个代码的思路

 for i in range(3):

用来进行翻页爬取 。 url的话可以根据你所要找到网页进行看看,大致上url都是有规律可循的
在这里插入图片描述
整个的代码很简单,看看就知道思路了.需要考虑的问题就已经给你们说到了

五:总结

第二次写博客了。不容易啊 给个赞 鼓励鼓励我吧
如果大家有好的方法可以给我说下。有问题的话可以在下面评论 看到的话会回复的
2019/7/27 亲测有效

发布了6 篇原创文章 · 获赞 3 · 访问量 684

猜你喜欢

转载自blog.csdn.net/weixin_41900803/article/details/97515918