Python爬虫学习之爬取淘宝搜索图片

Python爬虫学习之爬取淘宝搜索图片

准备工作

因为淘宝的反爬机制导致Scrapy不能使用,所以我这里是使用selenium来获取网页信息,并且通过lxml框架来提取信息。

selenium、lxml安装和版本适配

selenium需要与当前的chrome版本相匹配,否则会报错。如下图:
在这里插入图片描述
适配的方法可以参考:https://blog.csdn.net/qq_26200629/article/details/86141131,这里介绍的很详细了,我就不多说了。我使用的是PyCharm开发的,在插件管理中直接添加selenium和lxml就行

初始化构造函数

site_url是当前访问页。
base_site_url用来拼接跳转页。
chrome_driver是你下载的chromedriver所在路径。
sleep_time为休息时长。
save_img_path 图片保存路径。

    def __init__(self):
        """
        初始化构造函数
        """
        self.base_site_url = 'https://s.taobao.com/search?q=男士衬衫'
        self.site_url = 'https://s.taobao.com/search?q=男士衬衫'
        chrome_driver = 'C:/Users/CSSRC/AppData/Local/Temp/7zOC8AB4263/chromedriver.exe'
        self.driver = webdriver.Chrome(executable_path=chrome_driver)
        self.sleep_time = 5
        self.save_img_path = 'D:/git-proj/CrawlerFromTaoBao/image'

获取淘宝页面代码

    def get_page(self):
        """
        获取淘宝页面代码
        """
        self.driver.get(self.site_url)
        time.sleep(self.sleep_time)
        print(self.driver.title)

        self.get_item()

爬取当前页面的每个商品,提取商品的图片

    def get_item(self):
        """
        爬取当前页面的每个商品,
        提取商品的图片
        """

        html = self.driver.page_source.encode('utf-8')
        selector = etree.HTML(html)
        itemList = selector.xpath("//*[@class='J_ItemPic img']")

        # 循环遍历该页所有商品
        for divPic in itemList:
            image_id = divPic.xpath("./@id")[0]
            image_url = divPic.xpath("./@data-src")[0]
            self.save_img(self.save_img_path, image_url, image_id)

        # 获取分页信息
        pagination = selector.xpath(
            "//*[@class='item next']/a/@data-value")
        print(pagination)
        print('正在准备切换分页')
        if len(pagination) == 0:
            print('没有下一页了')
        else:
            print('加载下一页内容')
            self.site_url = self.base_site_url + "&s=" + pagination[0]
            print(self.site_url)
            self.get_page()

存储图片方法

    def save_img(savePath, imageURL, fileName):
        """
        存储图片方法

        Arguments:
            imageURL <string> -- 图片的url
            fileName <string> -- 用于存储的文件名/图片的ID
        """
        print('开始保存图片' + fileName)
        with open(savePath + '/' + fileName + '.png', 'wb') as f:
            f.write(requests.get("http:" + imageURL).content)
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值