scrapy
瓦力冫
喜欢看点书,跑跑步,热爱游戏编程
展开
-
使用scrapy 把爬到的数据保存到mysql 防止重复
1.环境建立1.使用xmapp安装php, mysql ,phpmyadmin2.安装python3,pip3.安装pymysql3.(windows 略)我这边是mac,安装brew,用brew 安装scrapy 2.整个流程1. 创建数据库和数据库表,准备保存2.写入爬虫目标URL,进行网络请求3.对爬返回数据进行处理,得到具体数据4.对于具体数据保存到数据库中 2.1.创建数据库首先创建一个...原创 2018-03-31 09:27:55 · 2646 阅读 · 0 评论 -
使用 Scrapy-Redis 进行分布式爬取
1. 简单原理我们知道scrapy大致的原理是这样,首先会在start_requests 这个方法里发出一些请求url,然后在parse里进行解析,解析的item抛给pipeline进行处理. parse 如果又解析到url,抛出,先看下是否要过滤这个url,是否重复了,如果没有重复,发一个新请求这个url,再调用别的parse进行处理。直到待请求的url都为空,就停止爬虫。import scra...原创 2018-04-07 10:25:56 · 4127 阅读 · 0 评论 -
scrapy 爬一个微信公众号的所有文章
1. 搜狗那个微信的搜索不行,用这个方法了,先要有一个公众号,然后新建图文信息,链接这边可以搜索一个公众号的所有文章。Ajax的格式的。 https://mp.weixin.qq.com/cgi-bin/appmsg?token=1219651365&lang=zh_CN&f=json&ajax=1&random=0.578791056424645&ac...原创 2018-05-07 18:11:49 · 2974 阅读 · 6 评论 -
python xpath 简单语法
1.例子item['price'] = response.xpath('//span[@class="p-price"]/span[2]/text()').extract_first() 1.//开头表示如果我们不想定义它的父元素,就用//表示 2.匹配具体的属性值,这里是class=p-price的 3.xpath一级级用/来 4.[2] 表示第二个元素,xpath中第一个是1,不是0 5.获取...原创 2018-05-27 17:05:53 · 3880 阅读 · 0 评论 -
scrapyd 安装使用
scrapyd解决什么痛点?1. 可以通过浏览器看爬虫的运行状态,包括时间,日志啊2.可以通过curl直接运行爬虫和停止爬虫1. 安装scrapydpip install scrapyd 2. 运行scrapydscrapyd根目录下执行scrapyd3.运行爬虫curl http://localhost:6800/schedule.json -d project=default -d spid...原创 2018-05-23 21:00:44 · 413 阅读 · 0 评论 -
scrapy 为每个spider 设置不同的pipelines
class ExceptionspiderSpider(scrapy.Spider): name = 'exceptionSpider' # allowed_domains = ['baidu.com'] start_urls = ['http://baidu.com/'] custom_settings = { 'ITEM_PIPELINES':...原创 2018-05-29 18:34:03 · 2269 阅读 · 0 评论 -
Python selenium 使用
1. headless模式初始化chrome_options = webdriver.ChromeOptions()chrome_options.add_argument('--headless')browser = webdriver.Chrome(chrome_options=chrome_options)wait = WebDriverWait(browser, 10) 2.打开一个U...原创 2018-05-24 20:29:34 · 399 阅读 · 0 评论 -
scrapy CrawlSpider 爬全站数据
# -*- coding: utf-8 -*-import scrapyfrom scrapy.spiders import CrawlSpider, Rule# from scrapy.linkextractors.sgml import SgmlLinkExtractorfrom scrapy.linkextractors import LinkExtractorfrom Craw...原创 2018-06-05 17:48:39 · 910 阅读 · 0 评论 -
scrapy 使用自定义的过滤器
from scrapy_redis.dupefilter import RFPDupeFilterclass CustomFilter(RFPDupeFilter): def request_seen(self, request): """Returns True if request was already seen. Parameters ...原创 2018-07-08 20:34:34 · 1618 阅读 · 1 评论 -
Scrapy Mac Selenium chrome headless
1. 安装chrome,chromedriver chrome浏览器要升级到最新版本。用brew安装chromedriver用pip安装 Selenium 2. 写middleware # -*- coding: utf-8 -*-# Define here the models for your spider middleware## See documentation in:# ht...原创 2018-04-12 15:09:41 · 827 阅读 · 0 评论 -
用Scrapy Splash 来抓取渲染后的html页面
很多复杂的网页都是用javascript来对网页进行填充,这样用request的body和在浏览器中看到的不一样啊。这个时候splash就可以使用了,它是提供一个轻量级的api,传给它网址,它返回网页内容。这样就OK了1.安装splash要先安装dockerdocker pull registry.docker-cn.com/scrapinghub/splash #从docker镜像中拉取sp...原创 2018-04-11 16:58:26 · 4658 阅读 · 1 评论 -
Scrapy 使用写死的cookie 来爬需要登录的页面
1. 流程 1.1先用浏览器chrome来访问目标地址,手动输入账号和密码,登录后,查看cookie,然后放到请求里面 2. 优缺点优点:1.可以跳过验证码2.不需要写登录的内容缺点:1.cookie有些网站容易过期2.每次带cookie请求增加网络带宽所以说适合小网站短时间操作 3.获取cookie用chrome浏览器,浏览目标地址,我这边是https://mp.csdn.net/postlis...原创 2018-04-01 08:20:16 · 5216 阅读 · 0 评论 -
Scrapy 模拟登录 用户名加密码
1. 模拟登陆抓取步骤1.1 先通过浏览器工具查看是否有隐藏的input 内容一起提交1.1.1 先请求登陆界面,对页面进行解析,获取隐藏的input 内容1.2 通过浏览器工具查看提交的所有表单,记录下来1.3 1.2中表单加上隐藏的一起提交1.4 等返回就request 目标url即可。 2. 用浏览器工具查看是否有隐藏input我们这次的是CSDN的登陆界面 https://passport...原创 2018-04-01 11:05:41 · 2430 阅读 · 1 评论 -
Scrapy 抓取图片
1. 先写一个特殊的Itemclass CSDNImgItem(scrapy.Item): image_urls = scrapy.Field() images = scrapy.Field()注意这个字段是写死的image_urls 是图片的地址的一个数组,images记录图片信息不用管。 2.yield item image_urls = response.css('#cnbl...原创 2018-04-09 06:56:01 · 585 阅读 · 0 评论 -
Scrapy 抓取指数基金6个月前10 名 存到mongodb 中
1.抓取前的分析 http://fund.eastmoney.com/trade/zs.html#zwf_,sc_6y,st_desc 地址是这个,我们发现中间的内容是后来通过ajax来加载的,所以这个地址是抓取不到的。通过chrome开发者工具发现真正的地址是这个: https://fundapi.eastmoney.com/fundtradenew.aspx?ft=zs&sc=3y&a...原创 2018-04-01 21:22:06 · 665 阅读 · 0 评论 -
pycharm 调试 scrapy
首先我们用pig3 安装scrapy后,然后使用scrapy crawl xxx 其实是用编译好的执行文件来执行而已,这个执行文件的位置在 /usr/local/bin/scrapy 后面的crawl 和xxx都是参数,其中xxx表示爬虫的名字,也不是文件名啥的。而pycharm 调试其实是用python xxx的形式,就是用python来执行脚本。所以要真的调试scrapy,要用python...原创 2018-04-02 09:31:20 · 409 阅读 · 0 评论 -
Docker 部署Scrapy
假设我们要在10台Ubuntu 部署爬虫如何搞之?用传统的方法会吐血的,除非你记录下来每个步骤,然后步骤之间的次序还完全一样,这样才行。但是这样还是累啊,个别软件下载又需要时间。所以Docker出现了。Docker把系统,各种需要的应用,还有设置编译成一个image,然后 run一下就可以了。跟虚拟机的区别是不需要而外的物理支持,共用的。1. 部署步骤1.1 上传本地scrapy爬虫代码除了set...原创 2018-04-09 16:47:14 · 2428 阅读 · 0 评论 -
Scrapy middleware 设置随机User-Agent 和 proxy
1.初始化一些User-Agent 建立一个文件叫useragent.py agents = [ "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5", "Mozilla/5.0 (Windows; U...原创 2018-04-11 10:53:42 · 2247 阅读 · 1 评论 -
Scrapy 抓取图片301 和 403错误
1. 301错误 301是重定向,在settings加这个就可以了,默认是FalseMEDIA_ALLOW_REDIRECTS =True 2.403错误 403是禁止访问的错误,我这边是因为对方对Referer进行了判断,如果是空就会403,在process_request中的request中加Referer.用目标网址替换这边的xxxxx def process_request(self...原创 2018-04-11 13:53:38 · 2456 阅读 · 0 评论 -
scrapy 保存cookie
from scrapy.http.cookies import CookieJar # 该模块继承自内置的http.cookiejar,操作类似# 实例化一个cookiejar对象cookie_jar = CookieJar()real_cookie = {}# 首先是cookie的提取class MySpider(scrapy.Spider): .... ......原创 2018-07-15 18:01:12 · 2413 阅读 · 0 评论