下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
pip install wheel
pip install lxml
pip install pyopenssl
pip install Twisted
pip install pywin32
pip install scrapy

scrapy startproject jandan 创建项目
cd jandan
cd jandan

items.py 存放数据
pipelines.py 管道文件

由于煎蛋网有反爬虫措施,我们需要做一些处理

settings文件

ROBOTSTXT_OBEY = False #不遵寻reboot协议
DOWNLOAD_DELAY = 2 #下载延迟时间
DOWNLOAD_TIMEOUT = 15 #下载超时时间
COOKIES_ENABLED = False #禁用cookie
DOWNLOADER_MIDDLEWARES = {   #请求头   'jandan.middlewares.RandomUserAgent': 100,   #代理ip   'jandan.middlewares.RandomProxy': 200,}
#请求列表USER_AGENTS = [   #遨游   "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)",   #火狐   "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",   #谷歌   "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"]

#代理ip列表PROXIES = [   {"ip_port":"119.177.90.103:9999","user_passwd":""},   #代理ip无密码   {"ip_port":"101.132.122.230:3128","user_passwd":""},   #代理ip有密码   # {"ip_port":"123.139.56.238:9999","user_passwd":"root:admin"}]
#管道文件,取消注释ITEM_PIPELINES = {   'jandan.pipelines.JandanPipeline': 300,}
IMAGES_STORE = "images"

middlewares文件
import random
import base64
from jandan.settings import USER_AGENTS
from jandan.settings import PROXIESclass RandomUserAgent(object):def process_request(self,request,spider):useragent = random.choice(USER_AGENTS)request.headers.setdefault("User-Agent",useragent)class RandomProxy(object):def process_request(self,request,spider):proxy = random.choice(PROXIES)if proxy["user_passwd"] is None:request.meta["proxy"] = "http://" + proxy["ip_port"]else:# b64编码接收字节对象,在py3中str是unicode,需要转换,返回是字节对象base64_userpasswd = base64.b16encode(proxy["user_passwd"].encode())request.meta["proxy"] = "http://" + proxy["ip_port"]#拼接是字符串,需要转码request.headers["Proxy-Authorization"] = "Basic " + base64_userpasswd.decode()

items文件

import scrapyclass JandanItem(scrapy.Item):name = scrapy.Field()url = scrapy.Field()

scrapy genspider  -t crawl dj jandan.net 创建crawlscrapy类爬虫
会自动在spiders下创建jandan.py文件,页面由js编写,需要BeautifulSoup类定位js元素获取数据

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from jandan.items import JandanItem
from selenium import webdriver
from bs4 import BeautifulSoup as bs4class JdSpider(CrawlSpider):name = 'jd'allowed_domains = ['jandan.net']start_urls = ['http://jandan.net/pic/page-1#comments/']rules = (Rule(LinkExtractor(allow=r'pic/page-\d+'), callback='parse_item', follow=True),)def parse_item(self, response):item = JandanItem()driver = webdriver.PhantomJS()driver.get(response.url)soup = bs4(driver.page_source, 'html.parser')all_data = soup.find_all('div', {'class': 'row'})for i in all_data:name = i.find("strong")item["name"] = name.get_text().strip()link = i.find('a', {'class': 'view_img_link'})url = link.get("href")if len(url) == 0:returnitem["url"] = "http://" + url.split("//")[-1]yield item

pipelines.py

import json
import os
import requests
from scrapy.conf import settingsclass JandanPipeline(object):   #保存为json文件# def __init__(self):#     self.filename = open("jandan.json","wb")#     self.num = 0# # def process_item(self, item, spider):#     text = json.dumps(dict(item),ensure_ascii=False) + "\n"#     self.filename.write(text.encode("utf-8"))#     self.num += 1#     return item# # def close_spider(self,spider):#     self.filename.close()#     print("总共有" + str(self.num) + "个资源")  #下载到本地def process_item(self, item, spider):if 'url' in item:dir_path = settings["IMAGES_STORE"]if not os.path.exists(dir_path):os.makedirs(dir_path)su = "." + item["url"].split(".")[-1]path = item["name"] + sunew_path = '%s/%s' % (dir_path, path)if not os.path.exists(new_path):with open(new_path, 'wb') as handle:response = requests.get(item["url"], stream=True)for block in response.iter_content(1024):if not block:breakhandle.write(block)return item

scrapy crawl dj 启动爬虫

scrapy shell "https://hr.tencent.com/position.php?&start=0" 发送请求

奉上我的github地址,会定期更新项目

https://github.com/bjptw/workspace

转载于:https://www.cnblogs.com/bjp9528/p/9318013.html

scrapy从安装到爬取煎蛋网图片相关推荐

  1. python爬虫图片实例-Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

  2. python爬图代码实例_Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

  3. Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

  4. 利用C#爬取煎蛋网图片

    本程序还有待优化,我只爬取了每个页面的第一张图片,你们可以自己更新优化代码以实现全站爬取的功能. 主要用到的命名空间有: using System; using System.Collections. ...

  5. Python Scrapy 爬取煎蛋网妹子图实例(一)

    前面介绍了爬虫框架的一个实例,那个比较简单,这里在介绍一个实例 爬取 煎蛋网 妹子图,遗憾的是 上周煎蛋网还有妹子图了,但是这周妹子图变成了 随手拍, 不过没关系,我们爬图的目的是为了加强实战应用,管 ...

  6. python爬取煎蛋网妹子图

    看了小甲鱼的python教学视频,爬取煎蛋网妹子图的代码已经不适用了,网上其它人的代码多有报错,本萌新结合其他人的方法,终于写出一个可行的,在此分享_(:з)∠)_(运行非常慢就是了) import ...

  7. 利用Selenium爬取煎蛋网妹纸图原来是这么简单!!!

    上期说到,下期更新爬取煎蛋网妹纸的selenium版本,它来了!!! 获取页面url信息 获取图片url信息 永久性保存图片 注释: 想要获取GeckoDriver安装包的小伙伴,可以给博主留言或者搜 ...

  8. python 爬虫爬取煎蛋网妹子图,我1T的硬盘装满了!

    前言 大家好,这里是「brucepk」爬虫 系列教程.此系列教程以实例项目为材料进行分析,从项目中学习 python 爬虫,跟着我一起学习,每天进步一点点. 煎蛋网站 image 很多朋友都反应学 p ...

  9. 爬取煎蛋网中的妹子图

    看了小甲鱼爬取煎蛋网的视频,但是当时无论怎么写都写不出来,后来又看了一点其他视频,心血来潮把那段代码重写了一次,总算成功了,也算是解决一个心病吧,唯一美中不住的是还是不太会使用find函数,慢慢来吧, ...

最新文章

  1. GitHub重大好消息:私有仓库可无限制免费创建
  2. 【Python】判断字符串 str 是否为空
  3. Java学完后可以从事的工作岗位分享
  4. python online course_python-选课系统
  5. 程序员修神之路--略懂数据库集群读写分离而已
  6. 对抗机器学习(Adversarial Machine Learning)发展现状
  7. ps html css 工具,认识Photoshop(PS)CSS切图必用工具
  8. 小技巧 ----- 通过二进制串的位运算进行二维指数型枚举
  9. HDU-2036 改革春风吹满地 (多边形面积求解)
  10. springboot整合postgresql_SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子-阿里云开发者社区...
  11. PS替换证件照背景颜色
  12. Prolog入门教程(完整版+专家系统案例)
  13. Swing界面设计工具
  14. android 指纹存储密码,Android指纹登录/指纹支付简述
  15. 视频转gif如何做?三步教你视频转gif制作
  16. 国际贸易中,FOB CFR CIF的区别是什么?
  17. 唐骏解禁回IT:十年之内不跳槽
  18. 幸运数47:给定正整数n,求不大于n的仅由4和7组成的数字的个数
  19. 《Google 软件测试之道》摘录
  20. 云控平台的双向音频解决方案

热门文章

  1. python后台开发知识点_面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记...
  2. linux用户操作的日志,linux 用户操作记录并录入日志
  3. 天津天河计算机技术有限公司,“天河一号”超级计算机落户天津,命名为“天河”,取天津与“银河团队...
  4. java文件解压文件_java 文件解压缩
  5. java svn 版本号_eclipse中的Java文件自动根据svn版本号生成注释
  6. c++ 分页展示_分合相宜 Excel透视报表生成分页和汇总报表
  7. 力扣长度最小的子数组
  8. C++使用JSON的序列化与反序列化
  9. MPEG的完整形式是什么?
  10. 如果__name__ =='__main__':在Python中怎么办?