苦练爬虫第二天!!!

'''
去爬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=)"(.*?)"(/>
| />
)<!-- 个性化打标:已购买、常浏览 -->'
    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