【python】淘宝利用cookies登录,爬取商品信息

所用到的库

import requests
import re
import csv

1.登录淘宝(打开持续日志,便于获得登录信息)

2.保存登录cookies(保存到本地mycookies.txt)

3.请求登录

def getHTML():
    name = input('请输入爬取商品的名字:')
    start_url = 'https://s.taobao.com/search?q={}&s='.format(name)
    header = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'
    }
    path = 'C:/Users/lidantao/Desktop/python_homework/17210120721_李丹涛_17创新实验班(第十五次)/mycookies.txt'
    with open(path,'r')as f:
        mycookies = f.read()
    mycookies = mycookies.split(';')
    cookies = {}
    for cookie in mycookies:
        name,value = cookie.strip().split('=',1)
        cookies[name] = value
    pages = input('请输入爬取的商品页数:')
    goods = ''
    for i in range(int(pages)):
        url = start_url + str(i*44)
        r = requests.get(url,headers=header,cookies=cookies,timeout=60)
        r.encoding = r.apparent_encoding
        goods += r.text
    return goods

5.查找商品信息:

def findMS(html):
    print('='*20,'正在爬取商品信息','='*20,'\n')
    marketnames = re.findall('"nick":"(.*?)"',html)
    titles = re.findall('"raw_title":"(.*?)"',html)
    prices = re.findall('"view_price":"(.*?)"',html)
    citys = re.findall('"item_loc":"(.*?)"',html)
    pays = re.findall('"view_sales":"(.*?)"',html)
    data = []
    try:
        for i in range(len(titles)):
            data.append([marketnames[i],titles[i],prices[i],citys[i],pays[i]])
        if data == '':
            print('='*20,'暂无此商品信息','='*20,'\n')
            return data
        print('='*20,'爬取成功','='*20,'\n')
    except:
        print('异常,爬取中断')
    return data

6.保存商品信息到本地:

def download(data):
    print('='*20,'正在保存商品信息','='*20,'\n')
    path = 'C:/Users/lidantao/Desktop/python_homework/17210120721_李丹涛_17创新实验班(第十五次)/goods.csv'
    try:
        f = open(path,"w",newline="")
        writer = csv.writer(f)
        writer.writerow(['店铺名称','商品','价格(单位:元)','店铺所在地','付款人数'])
        writer.writerows(data)
        print('='*20,'保存成功','='*20,'\n')
    except:
        print('保存失败')
    f.close()

7.源代码如下:

import requests
import re
import csv



def getHTML():
    name = input('请输入爬取商品的名字:')
    start_url = 'https://s.taobao.com/search?q={}&s='.format(name)
    header = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'
    }
    path = 'C:/Users/lidantao/Desktop/python_homework/17210120721_李丹涛_17创新实验班(第十五次)/mycookies.txt'
    with open(path,'r')as f:
        mycookies = f.read()
    mycookies = mycookies.split(';')
    cookies = {}
    for cookie in mycookies:
        name,value = cookie.strip().split('=',1)
        cookies[name] = value
    pages = input('请输入爬取的商品页数:')
    goods = ''
    for i in range(int(pages)):
        url = start_url + str(i*44)
        r = requests.get(url,headers=header,cookies=cookies,timeout=60)
        r.encoding = r.apparent_encoding
        goods += r.text
    return goods


def findMS(html):
    print('='*20,'正在爬取商品信息','='*20,'\n')
    marketnames = re.findall('"nick":"(.*?)"',html)
    titles = re.findall('"raw_title":"(.*?)"',html)
    prices = re.findall('"view_price":"(.*?)"',html)
    citys = re.findall('"item_loc":"(.*?)"',html)
    pays = re.findall('"view_sales":"(.*?)"',html)
    data = []
    try:
        for i in range(len(titles)):
            data.append([marketnames[i],titles[i],prices[i],citys[i],pays[i]])
        if data == '':
            print('='*20,'暂无此商品信息','='*20,'\n')
            return data
        print('='*20,'爬取成功','='*20,'\n')
    except:
        print('异常,爬取中断')
    return data


def download(data):
    print('='*20,'正在保存商品信息','='*20,'\n')
    path = 'C:/Users/lidantao/Desktop/python_homework/17210120721_李丹涛_17创新实验班(第十五次)/goods.csv'
    try:
        f = open(path,"w",newline="")
        writer = csv.writer(f)
        writer.writerow(['店铺名称','商品','价格(单位:元)','店铺所在地','付款人数'])
        writer.writerows(data)
        print('='*20,'保存成功','='*20,'\n')
    except:
        print('保存失败')
    f.close()


def main():
    html = getHTML()
    data = findMS(html)
    download(data)

if __name__ == "__main__":
    main()

项目效果:

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 要实现Python爬取淘宝网站商品信息并跳过登录,可以采取以下几个步骤: 1. 导入所需的库:首先,需要导入相关的库,如requests库用于发送HTTP请求,BeautifulSoup库用于解析网页内容。 2. 发送请求获取网页内容:使用requests库发送请求,模拟浏览器访问淘宝网站,并获取网页的HTML内容。 3. 解析网页内容:使用BeautifulSoup库对获取的网页内容进行解析,提取出需要的商品信息。可以通过查看淘宝网站的HTML结构和CSS选择器来定位和提取所需的信息。 4. 分析和处理数据:获取商品信息后,可以进行数据分析和处理。比如可以统计不同类别的商品数量,价格分布等,并使用合适的可视化工具展示分析结果。 5. 跳过登录:一般情况下,淘宝网站为了保护用户隐私,需要进行登录才能爬取具体的商品信息。如果要跳过登录,可以使用一些技巧,如使用Cookie模拟登录状态,或者直接通过URL获取商品数据。 总结起来,实现Python爬取淘宝网站商品信息并跳过登录的关键是通过网络请求和HTML解析库获取网页内容,并使用适当的技巧绕过登录限制,最后进行数据分析和处理。 ### 回答2: 要实现Python淘宝网站的商品信息爬取与分析,并跳过登录流程,可以通过以下步骤进行: 1. 安装必要的库:首先,需要安装Python的相关库,如requests、BeautifulSoup等。使用pip install命令可以方便地安装这些库。 2. 模拟浏览器登录请求:在请求淘宝网站之前,需要模拟登录获取到有效的登录凭证(cookies)。通过在浏览器中登录淘宝,并使用开发者工具获取登录请求的headers和cookies,然后在代码中设置这些信息。 3. 发送搜索请求并获取商品信息:使用requests库发送搜索请求,并将模拟登录cookies添加到请求的headers中。接着,解析返回的HTML页面,可以使用BeautifulSoup库来处理HTML文档,并提取所需的商品信息。 4. 数据处理与分析:对获取到的商品信息进行处理和分析。可以使用pandas库将数据转换为数据框(DataFrame),方便进行后续的数据操作和分析。可以计算各商品的销量、价格等指标,并进行排序、筛选等操作。 5. 可视化展示:可以使用matplotlib、seaborn等库对数据进行可视化展示。例如,绘制商品销量的柱状图、价格的分布图等。这样能更直观地展示数据,帮助进行进一步的分析。 需要注意的是,在进行淘宝商品信息爬取时,需要遵守网络爬虫的规范,并确保自己的行为合法合规,不侵犯他人的权益。同时,由于淘宝的网页结构可能会不断变化,因此需要根据实际情况对代码进行适当的调整和更新。 ### 回答3: Python 可以使用一些库和技术,来爬取淘宝网站的商品信息并进行分析,而无需登录。下面是利用 Python 实现该功能的方法。 首先,可以使用 requests 库发送 HTTP 请求获取网页内容。通过向淘宝网站发送请求,并指定相关的搜索参数,可以得到返回的 HTML 页面。 接下来,可以使用 BeautifulSoup 库解析 HTML 页面,提取所需的商品信息。通过分析 HTML 页面的结构,可以使用该库提供的各种方法和选择器,来获取商品的标题、价格、销量等信息。 爬取到的商品信息可以存储在数据库中,或者写入到文件中进行后续分析。程序可以使用 MySQL 或者 MongoDB 等数据库来存储数据,或者使用 CSV 或者 JSON 格式来保存数据。 分析数据时,可以使用 pandas 库进行数据处理和清洗。通过读取数据库或者文件中的数据,可以使用 pandas 提供的各种函数和方法,对数据进行统计、排序、筛选等操作。 为了更好地展示和分析数据,可以使用 matplotlib 或者 seaborn 等数据可视化库。这些库可以绘制各种图表,如柱状图、折线图、散点图等,以便更直观地理解和分析商品信息。 值得注意的是,为了遵守法律法规和网站的使用规定,爬取数据时应遵循相关的规定,并尽可能避免对网站造成过大的压力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值