本文来源吾爱破解论坛
来社区也已经20来天了,看到各位大佬操作猛如虎,我这个新手只能躲在角落里默默鼓掌 QQ截图20180811191945.jpg (372.1 KB, 下载次数: 3)
下载附件
保存到相册
编程区里面看到很多大佬分享心得
有目录式的:一篇一篇,由浅入深;有项目式的,一篇一个项目
今天小弟我,分享一下爬取煎蛋网的妹子图心得
贴出网址,http://jandan.net/ooxx进cmd建立一个scrapy项目,然后再创建一个spider,语法可以在网上查到
在item中创建我们需要取到的信息对象[Python] 纯文本查看 复制代码import scrapy
class JiandanpItem(scrapy.Item):
img_name = scrapy.Field()
img_url = scrapy.Field()
这里我就创建了两个
在爬虫spider里就是重头戏了,使用xpath,css等选择器爬取网页中有用的信息,如下:
[Python] 纯文本查看 复制代码# -*- coding: utf-8 -*-
import scrapy
import base64
from jiandanP import items
class JiandanSpider(scrapy.Spider):
name = 'jiandan'
allowed_domains = ['jandan.net']
start_urls = ['http://jandan.net/ooxx']
def parse(self, response):
img = response.xpath('//div[@id="comments"]/ol[@class="commentlist"]/li[@id]')
for i in img:
img_name = i.xpath('.//span[@class="righttext"]/a/text()').get()
img_hash = i.xpath('.//p//span[@class="img-hash"]/text()').get()
img_url_raw = base64.b64decode(img_hash)
img_url = 'https:' + str(img_url_raw, encoding='utf-8')
item = items.JiandanpItem(img_name=img_name, img_url=img_url)
print(item)
yield item
#next_url = response.xpath('/html/body/div[2]/div[2]/div[1]/div[2]/div[3]/div/a[last()]/@href').get()
url = response.css('a[class="previous-comment-page"]::attr(href)')[1].get()
print('rushang')
next_url = 'https:' + url
if next_url:
print('next_url存在, 正在下载' + next_url + '数据')
yield scrapy.Request(url=next_url, callback=self.parse)
下面的一个next_url,存在不足,就是在第一页的时候不能够找到这个标签。。(也没有报错不知道为啥)
其实重点也就是,图片链接被js文件中的函数进行加密了而已,使用到了两个函数。
在这里我们发现只需要base64库中的函数进行解码就可以
最后是保存了,在pipeline中函数如下:
[Python] 纯文本查看 复制代码# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import requests
import os
class JiandanpPipeline(object):
def process_item(self, item, spider):
path = os.path.abspath('..')
save_path = path + '\\img'
if not os.path.exists(save_path):
os.mkdir(save_path)
print('文件夹创建成功!')
img_url = item['img_url']
img_name = item['img_name']
save_img = save_path + '\\' + img_name +'.jpg'
r = requests.get(img_url)
print('正在下载图片%s......' % img_name)
with open(save_img, 'wb') as f:
f.write(r.content)
f.close()
代码的可变性比较大,比如说图片的命名,保存路径等。
主要自己对煎蛋网的网页源代码摸得不太熟,希望有大佬可以不吝赐教。
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇:
- 下一篇: python实现linux脚本定时重启,实现日志文件分日期存放