鱼C论坛

 找回密码
 立即注册
查看: 1177|回复: 1

[技术交流] 解析网址信息时encode无法正常工作

[复制链接]
发表于 2018-5-9 20:20:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前几天写了一个爬虫:
import requests
import pymongo

        
def save_to_mongo(goods_list,goods):
    # 定义客户端
    client = pymongo.MongoClient()  
    #定义数据库名称
    taobaoDB = client['taobao']  
    # 定义表名,根据输入的商品名称来定义表
    table_name = taobaoDB[goods]
   
    for each in goods_list:
        table_name.update({'name':each['name']},{'$set': each}, True)

        
def get_detail(response,goods):
    import re
    # 找到并获取商品名称,价格,产地,购买人数
    items = re.findall(r'"raw_title":"([^"]+)".*?"detail_url":"([^"]+?)".*?"view_price":"([^"]+?)".*?"item_loc":"([^"]+?)".*?"view_sales":"([^"]+?)"',response.text,re.S)
    #print(items)
    goods_list = []
    #print(items)
    for item in items:
        # encode时总是出错,但是单独把字符串拿出来encode却不会报错 begin
        print(item[1])
        #print(str('//detail.tmall.com/item.htm?id\u003d566734808746\u0026ns\u003d1\u0026abbucket\u003d0'.encode('utf-8'))[2:-1])
        # end
        print(item[0],str(item[1].encode('utf-8'))[2:-1],item[2],item[3][:3])
        result = {
            'name':item[0],
            'url':str(item[1].encode('utf-8'))[2:-1],
            'price':item[2],
            'location':item[3],
            'sales_cnt':item[4][:3]
        }
        goods_list.append(result)
    save_to_mongo(goods_list,goods)
   
        
def get_pages():
    goods = input("请输入需要查找的商品名:")
    payload = {'q': goods,'s': '1','ie':'utf8'}
   
    # 实现翻页,方法有多种,这是其中一种
    # 观察淘宝翻页时的网址变化:
    # 第二页 https://s.taobao.com/search?q=cloth&s=44
    # 第三页 https://s.taobao.com/search?q=cloth&s=88
    # 这个可能和浏览器分辨率有关,需要在实现时注意
   
    for i in range(0,2):
        url = 'https://s.taobao.com/search'
        
        response = requests.get(url,payload)
        #response.encoding = 'utf-8'
        #print(response.text)
        get_detail(response,goods)
        payload ['s'] = 44*i+1

get_pages()

这其中在
item[1].encode('utf-8')
执行这一句时,无法正常把网址中包含的乱码解析成数字或符号,但是如果把一个str类型的变量单独拿出来做encode,却可以完美完成,不知是何缘故
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-10 08:35:55 | 显示全部楼层

回帖奖励 +1 鱼币

仔细研究一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 10:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表