网络爬虫

开源网络爬虫汇总

天涯浪子 提交于 2019-12-23 17:49:49
Awesome-crawler-cn 互联网爬虫,蜘蛛,数据采集器,网页解析器的汇总,因新技术不断发展,新框架层出不穷,此文会不断更新... 交流讨论 欢迎推荐你知道的开源网络爬虫,网页抽取框架. 开源网络爬虫QQ交流群:322937592 email address: liinux at qq.com Python Scrapy - 一种高效的屏幕,网页数据采集框架。 django-dynamic-scraper - 基于Scrapy内核由django Web框架开发的爬虫。 Scrapy-Redis - 基于Scrapy内核采用Redis组件的爬虫。 scrapy-cluster - 基于Scrapy内核采用Redis 和 Kafka 开发的分布式爬虫框架。 distribute_crawler - 基于Scrapy内核采用redis, mongodb开发的分布式爬虫框架。 pyspider - 一个强大纯python的数据采集系统. cola - 一个分布式的爬虫框架. Demiurge - 基于PyQuery的微型爬虫框架. Scrapely - 一个纯python的HTML页面捕捉库. feedparser - 一个通用的feed解析器. you-get - 静默网站爬去下载器. Grab - 网站采集框架. MechanicalSoup -

蛙蛙推荐:谈谈网络爬虫设计中的问题

馋奶兔 提交于 2019-12-23 08:15:23
蛙蛙推荐:谈谈网络爬虫设计中的问题 网络蜘蛛现在开源的已经有好几个了, Larbin , Nutch , Heritrix 都各有用户之地,要做一个自己的爬虫要解决好多个问题,比如调度算法、更新策略、分布式存储等,我们来一一看一下。 一个爬虫要做的事主要有以下这些 从一个网页入口,分析链接,一层一层的遍历,或者从一组网页入口,或者从一个rss源列表开始爬rss; 获取每个页面的源码保存在磁盘或者数据库里; 遍历抓下来的网页进行处理,比如提取正文,消重等; 根据用途把处理后的文本进行索引、分类、聚类等操作。 以上是个人理解哦,呵呵。这些过程中,大约有如下问题 如何获取网页源或者RSS源? 如果是一般的爬虫的话,就是给几个入口页面,然后顺着超链接以遍历图的算法一个页面一个页面的爬,这种情况网页源很少,可以选择从hao123等网址大全的网站为入口开始爬。如果做垂直搜索的话就人工去收集一些这个行业的网站,形成一个列表,从这个列表开始爬。如果是爬RSS的话,需要先收集RSS源,现在大的门户的新闻频道和主流的博客系统都有rss的功能,可以先爬一遍网站,找出rss的链接,要获取每个链接的内容,分析是否是rss格式,如果是就把这个链接保存到rss源数据库里,以后就专门爬这个rss源的rss。还有一种就是人工来整理,一般blog的rss都是有规律的,主域名跟一个用户名后面再跟上一个rss的固定页面

Python网络爬虫

落花浮王杯 提交于 2019-12-23 01:28:44
import requests from bs4 import BeautifulSoup from datetime import datetime import re import json import pandas import sqlite3 commenturl = 'http://comment5.news.sina.com.cn/page/info?\version=1&format=js&channel=gn&newsid=comos-{}&\group=&compress=0&ie=utf-8&oe=utf-8&page=1&\page_size=20' #获取评论数量 def getCommentCounts(newsurl): m = re.search('doc-i(.*).shtml', newsurl) newsid = m.group(1) comments = requests.get(commenturl.format(newsid)) jd = json.loads(comments.text.strip('var data=')) return jd['result']['count']['total'] #获取新闻详情 def getNewsDetail(newsurl): result = {} res = requests.get

Python写网络爬虫爬取腾讯新闻内容

浪尽此生 提交于 2019-12-21 21:03:36
最近学了一段时间的Python,想写个爬虫,去网上找了找,然后参考了一下自己写了一个爬取给定页面的爬虫。 Python的第三方库特别强大,提供了两个比较强大的库,一个requests, 另外一个BeautifulSoup,这两个库目前只是会用,其他的还不太了解,网上给了一个BeautifulSoup文档的链接,特别方便,不会的 直接查 (中文版的),还有一个关于 requests 的。 在使用这些第三方库之前要导入 import requests from bs4 import BeautifulSoup 写这个爬虫首先要获得该网页的html代码,然后用BeautifulSoup库进行解析,然后再分析一下腾讯新闻的html结构 这个是获取网页的html,为了方便使用,将它封装成一个函数 def getHTMLText(url): try: r = requests.get(url, timeout = 30) r.raise_for_status() #r.encoding = 'utf-8' return r.text except: return "" 其中,raise_for_status()方法在非成功时产生一个异常,即只要返回的请求代码状态status_code不是200,就产生一个异常 现在分析一下腾讯新闻的html结构 在chrome浏览器下,直接进去新闻之后

python网络爬虫(一):网络爬虫的定义

梦想的初衷 提交于 2019-12-21 17:14:01
网络爬虫,即Web Spider,是一个很形象的名字。 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。 网络蜘蛛是通过网页的链接地址来寻找网页的。 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。 如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。 这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。 网络爬虫的基本操作是抓取网页。 来源: https://www.cnblogs.com/whu-2017/p/8540732.html

【网络爬虫】爬取神奇宝贝Pokemon图鉴图片大全

て烟熏妆下的殇ゞ 提交于 2019-12-20 10:36:48
【网络爬虫】爬取神奇宝贝Pokemon图鉴 前言: 最近心血来潮,想要一个Pokemon图鉴,无可奈何网上没有相关的博客;后来想了想不如自己动手丰衣足食,就写了一个爬虫,成功从神奇宝贝Wiki百科爬取了神奇宝贝的名称+图片,效果如图: 由于是第一次写爬虫,可能下载比较慢,希望见谅; 代码: # -*- coding:UTF-8 -*- from bs4 import BeautifulSoup import requests import os from langconv import Converter def Traditional2Simplified ( sentence ) : sentence = Converter ( 'zh-hans' ) . convert ( sentence ) return sentence class downloader ( object ) : def __init__ ( self ) : self . target = r 'http://wiki.52poke.com/wiki/宝可梦列表%EF%BC%88按全国图鉴编号%EF%BC%89' # 章节页 self . root = 'http://wiki.52poke.com' self . pockmon = [ ] # 存放神奇宝贝名和属性 self . names = [

网络爬虫简介

倖福魔咒の 提交于 2019-12-19 18:33:02
爬虫简介: 网络爬虫是按照一定的规则,自动的抓取万维网信息的程序或者脚本。 各编程语言编写爬虫程序: 1,PHP:PHP是世界是最好的语言,但他天生不是做这个的,而且对多线程、异步支持不是很好,并发处理能力弱。爬虫是工具性程序,对速度和效率要求比较高。 2,Java:生态圈很完善,是Python爬虫最大的竞争对手。但是Java语言本身很笨重,代码量很大。重构成本比较高,任何修改会导致代码大量改动。爬虫经常要修改采集代码。 3,C/C++:运行效率是无敌的。但是学习和开发成本高。写个小爬虫程序可能要大半天时间。 4,Python:语法优美、代码简洁、开发效率高、支持的模块多。相关的HTTP请求模块和HTML解析模块非常丰富。还有Scrapy和Scrapy-redis框架让我们开发爬虫变得异常简单。 爬虫分类: 1,通用爬虫:通用爬虫是搜索引擎抓取系统的重要组成部分,主要是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 2,聚焦爬虫:聚焦爬虫指针对某一领域根据特定要求实现的爬虫程序,抓取需要的数据(垂直领域爬取) 聚焦爬虫设计思路: 1,确定爬取的url,模拟浏览器向服务器发起请求; 2,获取响应数据并进行数据解析; 3,将目标数据持久化到本地; 请求: 由客户端向服务器发出的,可以分为四部分内容: 1,请求方法:request method 2,请求网址:request

Python开发网络爬虫抓取某同城房价信息

时光毁灭记忆、已成空白 提交于 2019-12-19 04:06:51
前言: 苦逼的我从某某城市换到另一个稍微大点的某某城市,面临的第一个问题就是买房,奋斗10多年,又回到起点,废话就不多说了,看看如何设计程序把某同城上的房价数据抓取过来。 方案:方案思路很简单,先把网页内容获取下来,通过一定规则对内容解析,保存成想要的格式 难点是对网页的解析,是一个比较细致的活,必须边输出,边调试。 具体实现: 获取网页内容: def get_page(url): headers = { 'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3', 'Referer': r' http://jn.58.com/ershoufang/' , 'Host': r'jn.58.com', 'Connection': 'keep-alive' } timeout = 60 socket.setdefaulttimeout(timeout) # 设置超时 req = request.Request(url, headers=headers) response = request.urlopen(req).read() page =

[Python3网络爬虫开发实战] 1.8.2-Scrapy的安装

情到浓时终转凉″ 提交于 2019-12-19 03:30:23
Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted 14.0、lxml 3.4和pyOpenSSL 0.14。在不同的平台环境下,它所依赖的库也各不相同,所以在安装之前,最好确保把一些基本库安装好。本节就来介绍Scrapy在不同平台的安装方法。 1. 相关链接 官方网站: https://scrapy.org 官方文档: https://docs.scrapy.org PyPI: https://pypi.python.org/pypi/Scrapy GitHub: https://github.com/scrapy/scrapy 中文文档: http://scrapy-chs.readthedocs.io 2. Anaconda安装 这是一种比较简单的安装Scrapy的方法(尤其是对于Windows来说),如果你的Python是使用Anaconda安装的,或者还没有安装Python的话,可以使用此方法安装,这种方法简单、省力。当然,如果你的Python不是通过Anaconda安装的,可以继续看后面的内容。 关于Anaconda的安装方式,可以查看1.1节,在此不再赘述。 如果已经安装好了Anaconda,那么可以通过 conda 命令安装Scrapy,具体如下: 1 conda install Scrapy 3. Windows下的安装

垂直型爬虫架构设计(2)

走远了吗. 提交于 2019-12-18 12:41:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上文提到了关于爬虫的一些简单概念与爬虫真正要做的一些功能.简单的分析了一下垂直型爬虫与宽度(深度)遍历的一些特点.现在,我主要针对于垂直型爬虫的架构设计做一些简单的介绍. 1.垂直型爬虫的基本需求 目前企业级所需的基本上是垂直型爬虫.舆情分析,财经资讯资讯推荐等.基本山使用的都是垂直型爬虫来作为企业级使用的方案,企业级爬虫的特点我上篇博客里面已经讲过了,所以在做垂直型爬虫架构的时候只需要考虑抓去内容所需的功能.简单来说:拿到某篇资讯所需的方式或功能.例如:常见的 javascript方式,ajax等. 简单来列举一些我在抓去数据时所遇到的一些问题: 1.javascript调用正文 2.ajax方式获取正文 3.iframe方式 4.验证码 5.javascript调用下一页连接 6.javascript+post方式获取下一页连接 7.ajax方式获取内容 8.登录... 等. 这些都是需要在设计爬虫之初就要考虑的问题,虽然简单来说爬虫就是获取到需求所需的数据,但是很多时候数据的获取也不是那么简单的.所以框架的整体设计是非常关键的,甚至对于爬虫之后版本的发展都很重要,如果框架设计的不合理,发现新的问题就需要重新构建爬虫或者直接针对遇到的问题设计爬虫.这两种方式都不是可取的. 2.垂直型爬虫框架 之前提到