'''
去爬1号店的乐器图片
'''
from urllib import request
import os
import re
def instrumentCrawker(url, path):
if not os.path.exists(path):
os.makedirs(path)
#设置请求头
headers = {
'Accept': 'text/html, application/xhtml+xml, */*',
# 'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6756.400 QQBrowser/10.3.2545.400',
'DNT': '1',
'Connection': 'Keep-Alive'
}
#设置请求体
req = request.Request(url, headers=headers)
#得到回复内容
response = request.urlopen(req)
imageHtml = response.read().decode("utf-8")
#两个问题:一.\U的转译问题,字符串前面加r防止转译 二.编码问题,在windows下面,新文件的默认编码是gbk,后面重置编码
pat = '<img (src=|original=)"(.*?)"(/>\n| />\n)<!-- 个性化打标:已购买、常浏览 -->'
re_image = re.compile(pat)
imageList = re_image.findall(imageHtml)
for image in imageList:
#destPath = os.path.join(r'f:\image', str(imageList.index(image) + 1) + ".jpg")
#当时没有创建image文件夹,一直报错,难受
destPath = os.path.join(path, str(imageList.index(image) + 1) + ".jpg")
request.urlretrieve("http:" + image[1],filename=destPath)
url = "https://search.yhd.com/c6291-0-0"
path = os.path.join(os.getcwd(), 'image1')
instrumentCrawker(url, path)
体会:也写了两个比价简单的爬虫了,总的来说语法还是比较简单,就是其中的各种小BUG让人
非常难受呀!目前自己感觉怕重最重要的就是对内容的分析,然后定义提取内容的规律,之后处理提取到的内容。这一过程是比较麻烦的(暂时的体会,会后续更新的,加油)!
转载于:https://www.cnblogs.com/854594834-YT/p/10541997.html