irpas技术客

python爬虫遇到的坑3——关于scrapy中的URL_qq_43654105

大大的周 8439

第一个坑

??????我们在使用scrapy的时候都要先创建项目是吧这个就不多说的。

??????基本的目录结构就是这样,懂的都懂,也不多做解释了:

??????我就是在这里遇到的坑。 ??????这里面有个pipelines的py文件: ??????这个img_name变量是为了存储我即将下载的图片的文件名,原理是把图片地址的URL切开,把URL结尾的几个字符作为图片的名称,URL是这样的:

https://car3.autoimg.cn/cardfs/product/g25/M0A/5E/53/autohomecar__ChsEmF9zQUuAOt79ACT7Rgx018s791.jpg

??????看着没什么问题是吧,我就是把整个URL用"__"分成了两截,确实没问题,但我一开始使用了一个错误的URL,下面会讲到,那个错误的URL是

https://car.autohome.com.cn/photo/series/45606/12/6381824.html

??????大家看,这里哪有"__"啊,于是悲剧了,代码就是运行不起来,急死我了,最后经群里一个大神提示才发现事情不对,并且改成了最上面那个正确的URL,这下才对,所以大家别踩我的坑。

第二个坑

??????还是和URL有关。 ??????比如说这个页面把。 ??????然后我打开了chrome的页面检查,把鼠标放上去,找到了图片的URL:

图上可能看不清,一共有有两个URL: 第一个:<a href="/photo/series/45606/12/6381824.html" title="一汽-大众奥迪 奥迪e-tron 2021款 基本型" target="_blank"><img src="//car2.autoimg.cn/cardfs/product/g27/M02/56/98/240x180_0_q95_c42_autohomecar__ChwFkWAaPguAQGGWACP7fsvN2Xk173.jpg" alt="2021款 基本型" title="2021款 基本型"></a> 第二个:<img src="//car2.autoimg.cn/cardfs/product/g27/M02/56/98/240x180_0_q95_c42_autohomecar__ChwFkWAaPguAQGGWACP7fsvN2Xk173.jpg" alt="2021款 基本型" title="2021款 基本型">

??????我们可以看到,其中一个是html(这个链接会定向到一个高清大图的网页)结尾的,还有一个是.jpg(这个链接可以直接用爬虫下载,但是下载下来的就是一个小图,不清晰,不好看)结尾的。 ??????我一开始放在scrapy的连接是html格式的,下载下来的图片后缀就是html格式,所以打不开也正常。后来反应过来了,下载.jpg格式,但是是小图,不好看。 ??????所以我在scrapy里做了写操作,用requests.get先请求那个html引导至的高清大图,然后再爬取那个高清大图的.jpg格式,这样,大图就有了。

class PicPipeline: def process_item(self, item, spider): # 原.html的URL src = item['src'] # 请求高清大图网页 html = requests.get(src).text # 做个正则,把高清大图网页里的.jpgURL给提取出来 url = re.findall(r'[//car3.autoimg.cn/cardfs].*?jpg', html)[-1][43:] # 拼接,让URL直接可以访问 src = 'https:' + url print(src)

??????所以真的是要细心啊,真的。

??????完事。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #amp