记一次编写python爬虫遇到的问题

字符编码


字符ASCIIUnicodeUTF-8
A0100000100000000 0100000101000001
x01001110 0010110111100100 10111000 10101101
###将Unicode转换成普通的Python字符串:"编码(encode)"
unicodestring = u"Hello world"
utf8string = unicodestring.encode("utf-8")
asciistring = unicodestring.encode("ascii")
isostring = unicodestring.encode("ISO-8859-1")
utf16string = unicodestring.encode("utf-16")

 #将普通的Python字符串转换成Unicode: "解码(decode)" plainstring1 = unicode(utf8string, "utf-8")
plainstring2 = unicode(asciistring, "ascii")
plainstring3 = unicode(isostring, "ISO-8859-1")
plainstring4 = unicode(utf16string, "utf-16")
assert plainstring1==plainstring2==plainstring3==plainstring4

正则表达式


python re
re.compile(r'src=".*(jpg|png)"')
re.findall

python走代理


proxies = {
“http”: “http://localhost:1080“,
“https”: “http://localhost:1080“,
}

r=requests.get(link2, proxies=proxies)
r = requests.get(link)

网页编码转换

摘取下来为Unicode,转换为utf-8再用re更方便

下载图片

可以使用urllib.urlretrieve()时,名字需符合正常名字
如果不是以jpg png这种形式(如:https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTPT-yv6CivN3aqBARjdPU_kD-fPcPQdpv_PLx1mmcHOqSNppfsnkMUgw
需要response.get(url)得到反馈

response = requests.get(link+url)
img = Image.open(StringIO(response.content))
img.save(name)

StringIO (BytesIO)

from cStringIO import StringIO
与文件的使用方式一样,但它存在于内存,和文件的读写方式相同
创建 f = StringIO('Hello!\nHi!\nGoodbye!')
和此类似的还有BytesIO,非字符串形的可以使用BytesIO

创建目录并保存

如果目录不存在,则无法保存文件
如: 没有test文件夹,img.save("./test/sss.jpg")失败,需要首先创建文件夹
判断文件夹(或文件)是否存在:os.path.exists(path)
然后os.mkdir(dir)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值