python爬虫(二十四)爬取汽车之家某品牌图片

爬取汽车之家某品牌图片

需求

爬取汽车之家某品牌的汽车图片

目标url

https://car.autohome.com.cn/photolist/series/52880/6957393.html#pvareaid=3454450

页面分析

最开始出现的全景的图片不是爬取的范畴。每一页有90张图片,还要做一个翻页的处理。
在这里插入图片描述
在这里插入图片描述

找到一张图片,点右键,检查,可以发现每一张图片都存放在一个li标签内,所有的li标签都存放在ul标签内,图片的链接信息存放在li标签下a标签里的img标签内,复制src后面的地址,在新的网址中可以打开图片,说明存放的是图片的url地址。在打开图片的网址中,可以发现浏览器对图片地址进行了补全的操作。

下面要判断网页是动态还是静态加载出来的,对img标签进行判断,看是否存放在源码中,点击右键,检查网页源码,可以看到img里图片的url信息在源码中存在,所以目标url即为要爬取的url
在这里插入图片描述
下面进行翻页的处理。
第2页的url:https://car.autohome.com.cn/photolist/series/65/p2/
第3页的url:https://car.autohome.com.cn/photolist/series/65/p3/
这时我们把p3改为p1,发现也可以访问第1页
第1页的url:https://car.autohome.com.cn/photolist/series/65/p1/

实现步骤

创建scrapy框架,用https://car.autohome.com.cn/photolist/series/52880/6957393.html#pvareaid=3454450,作为目标url进行访问。

import scrapy
from pic.items import PicItem

class AutoSpider(scrapy.Spider):
    name = 'auto'
    allowed_domains = ['car.autohome.com.cn']
    start_urls = ['https://car.autohome.com.cn/photolist/series/52880/6957393.html#pvareaid=3454450']

    def parse(self, response):
        lis = response.xpath('//ul[@id="imgList"]/li')
        for li in lis:
            item = PicItem()
            item['src'] = 'http:' + li.xpath('./a/img/@src').get()
            print
基于Python requests 和 BeautifulSoup 开发爬虫 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
以下是一个简单的用 Python 爬取汽车之家图片的示例爬虫爬虫代码: ``` import requests import os from bs4 import BeautifulSoup def download_img(url, path): r = requests.get(url, stream=True) if r.status_code == 200: with open(path, 'wb') as f: for chunk in r: f.write(chunk) def crawler(base_url, output_dir): r = requests.get(base_url) soup = BeautifulSoup(r.text, 'html.parser') img_tags = soup.find_all('img') for img in img_tags: if 'src' in img.attrs: img_url = img.attrs['src'] if img_url.startswith('//'): img_url = 'http:' + img_url elif not img_url.startswith('http'): img_url = base_url + '/' + img_url print('Downloading image: %s' % img_url) filename = os.path.join(output_dir, img_url.split('/')[-1]) download_img(img_url, filename) if __name__ == '__main__': base_url = 'https://www.autohome.com.cn/news/' output_dir = './images' if not os.path.exists(output_dir): os.mkdir(output_dir) crawler(base_url, output_dir) ``` 该爬虫将从汽车之家的新闻页面 `https://www.autohome.com.cn/news/` 中爬取所有图片,并将其保存到本地目录 `./images` 中。 首先,爬虫会使用 requests 库向页面发送 GET 请求并获取页面 HTML,接着使用 BeautifulSoup 库将其解析为文档对象。然后,通过查找 HTML 标签中的 img 标签,找到所有图片,并将其下载到本地目录。 在下载图片时,使用 requests 库传递 "stream=True" 参数以保证请求不会立即下载整个响应内容。通过逐块处理响应,可以防止过多占用内存。然后,将内容写入文件中。 在主函数中,定义了基础 URL 和保存图像的输出目录。使用 os 模块确保输出目录存在并调用爬虫函数开始爬取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值