python转码方法_Python转码问题的解决方法

给你个文章参考一下https://www.cnblogs.com/helloxia/p/6374099.html

先来例程:

正则表达式法:(不推荐)

[python] view plain copy# -- coding: utf-8 -- """ Created on Thu Jun 1 16:22:10 2017

@author: qiu """ import urllib import re

下载网页

def get_content(url):

'''''

@url:需要下载的网址

下载网址

'''

html = urllib.request.urlopen(url)

content = html.read().decode('utf-8')#转码

html.close()#记得要将打开的网页关闭,否则会出现意想不到的问题

print (type(content))

return content

print (get_content(url))

def get_image(info):

'''''

@info:网页信息

查看下载内容的编码格式

78db6f7ffd8336a999924f792de56437.png

width="560" height="315" changedsize="true">

利用正则表达式学习样式规则

下载图片

'''

#正则表达式写法是重点

regx = r'pic_type="0" class="BDE_Image" src="(.+?\.jpg)"'

pat = re.compile(regx)

image_code = re.findall(pat,info)

print(type(image_code))

#一个一个保存

i=1

for image_url in image_code:

print(image_url)

urllib.request.urlretrieve(image_url,"C:\\Users\\qiu\\Desktop\\python源\\桌面图片\\%s.jpg"%(i))

i+=1

url = "https://tieba.baidu.com/p/2218566379" info = get_content(url) get_image(info)

BeautifulSoup法:[python] view plain copy# -- coding: utf-8 -- """ Created on Thu Jun 1 19:38:11 2017

@author: qiu """ import urllib from bs4 import BeautifulSoup

beautifulsoup方法,第三方库的方法,爬找网页

下载网页

def get_content(url):

'''''

@url:需要下载的网址

下载网址

'''

html = urllib.request.urlopen(url)

content = html.read().decode('utf-8')#转码

html.close()#记得要将打开的网页关闭,否则会出现意想不到的问题

print (type(content))

return content

def get_image(info):

'''''

利用Soup第三方库实现抓取

'''

soup = BeautifulSoup(info,"lxml")#设置解析器为“lxml”

all_image = soup.find_all('img',class_ = "BDE_Image")

x=1

for image in all_image:

print(all_image)

urllib.request.urlretrieve(image['src'],"C:\\Users\\qiu\\Desktop\\python源\\桌面图片\\%s.jpg"%(x))

x+=1

url = "https://tieba.baidu.com/p/2218566379" info = get_content(url) print (info) get_image(info)

总结:1、首先熟悉网页编程,至少能知道图片对应程序中的位置,将所需要的图片的程序内容单独拿出来,并比较和其他噪声图片的区别,包括class,pic_type等,能够保证所需下载内容程序书写上的唯一性。

2、利用"re"正则表达式或者all_image = soup.find_all('img',class_ = "") 方法实现唯一化表达

3、一些技巧总结:print (type( ))利用查看返回值类型,列表?字典?对象?等,如果是class,一定有方法,利用print (dir( )) 查看对象的方法。或者直接看官网文档。

问题:

1、一些动态网页需要另外技巧了,例如百度图片(康复机械臂)上的图片如何下载,是另外一个需要解决的问题。

更好的方法:scrapy(爬虫框架)

不过安装有点麻烦,当然我还是pip法:库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值