欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-11 10:50:53
...

字符编码


字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 01001110 00101101 11100100 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)

相关标签: 爬虫 python