python爬虫

爬虫智能解析库 Readability 和 Newspaper 的用法

做~自己de王妃 提交于 2020-01-22 20:32:49
舆情爬虫是网络爬虫一个比较重要的分支,舆情爬虫往往需要爬虫工程师爬取几百几千个新闻站点。比如一个新闻页面我们需要爬取其标题、正文、时间、作者等信息,如果用传统的方式来实现,每一个站点都要配置非常多的规则,如果要维护一个几百上千的站点,那人力成本简直太高了。 如果有一种方式可以在保证差不多的准确率的前提下,大幅提高提取效率的话,就需要用到智能文本提取了。 本文首先介绍一下智能文本提取的基本原理,让大家对智能提取有基本的了解。然后介绍几个比较基础的工具包,准确率并不是很高,可以尝试一用。最后再介绍几篇比较前沿的技术供大家参考。 智能文本提取 目前来说,智能文本提取可以分为三类: 基于网页文档内容的提取方法 基于 DOM 结构信息的提取方法 基于视觉信息的提取方法 基于网页文档的提取方法将 HTML 文档视为文本进行处理,适用于处理含有大量文本信息且结构简单易于处理的单记录网页,或者具有实时要求的在线分析网页应用。这种方式主要利用自然语言处理相关技术实现,通过理解 文本语义、分析上下文、设定提取规则等,实现对大段网页文档的快速处理。其中,较为知名的方法有TSIMMIS、Web-OQL、Serrano、FAR-SW 和 FOREST,但这些方法由于通常需要人工的参与,且存在耗时长、效率低的弊端。 基于 DOM 结构信息的方法将 HTML 文档解析为相应的 DOM 树,然后根据 DOM

【Python爬虫】之爬取页面内容、图片以及用selenium爬取

无人久伴 提交于 2020-01-22 18:24:01
下面不做过多文字描述: 首先、安装必要的库 # 安装BeautifulSoup pip install beautifulsoup4 # 安装requests pip install requests 其次、上代码!!! ①重定向网站爬虫h4文字 import requests from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.by import By from PIL import Image # 重定向爬虫h4 url = "http://www.itest.info/courses" soup = BeautifulSoup(requests.get(url).text,'html.parser') for courses in soup.find_all('p'): print(courses.text) print("\r") ②v2ex爬取标题 import requests from bs4 import BeautifulSoup # v2ex爬虫标题 url = "https://www.v2ex.com" v2ex = BeautifulSoup(requests.get(url).text,'html.parser') for

LouGou小爬虫

懵懂的女人 提交于 2020-01-21 23:42:31
1 # _author: Jolly 2 # date: 2019/9/8 3 4 from selenium import webdriver 5 from selenium.webdriver.support.ui import WebDriverWait 6 from selenium.webdriver.support import expected_conditions as EC 7 from selenium.webdriver.common.by import By 8 from lxml import etree 9 import time 10 import csv 11 12 class Lagouspider(object): 13 def __init__(self, writer_info): 14 self.writer_info = writer_info 15 self.list_page_url = 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=' 16 self.driver_path = r'D:\xuexiruanjian\chromedriver\chromedriver.exe' 17 self.driver =

python爬虫笔记(四)网络爬虫之提取—Beautiful Soup库

泪湿孤枕 提交于 2020-01-21 22:51:54
1. Beautiful Soup安装 pip install beautifulsoup linux要用 pip3 2. 使用 使用这个网站: https://python123.io/ws/demo.html # -*- coding: utf-8 -*- """ Created on Tue Jan 21 21:29:56 2020 @author: douzi """ import requests from bs4 import BeautifulSoup r = requests.get("http://python123.io/ws/demo.html") print(r.text) demo = r.text soup = BeautifulSoup(demo, "html.parser") print(soup.prettify()) 来源: https://www.cnblogs.com/douzujun/p/12227172.html

Python 爬虫框架Scrapy安装汇总

半世苍凉 提交于 2020-01-21 11:22:27
传统方式安装Scrapy(慎用) 练习了基本的操作之后,当然就要找框架来进行爬虫实验啊。于是就在网上找Windows 64安装Scrapy的方法,查到的都是非常繁琐的安装方式,由于Scrapy有很多个依赖,所以在安装Scrapy之前你就要先安装他的所有的依赖啊,下面列举出部分依赖库: lxml模块 cryptography模块 pywin32模块 Twisted模块 pyOpenSSL模块等等,大家想想啊,Python怎么会那么顺利的让我们安装完这里模块呢?答案是一定的。有些人会说,我就不信我直接一个命令pip install Scrapy看看能不能直接安装上,敲完命令直接之歌回车键,看见命令行工具上显示的安装过程还笑出声来,终于可以进行爬虫了,没想到最后出现了一个错误failed with error code 1 in C:****************\Temp\pip-build-5f9_epll\Twisted\,于是乎就查到原来没有Twisted这个依赖的模块,想着pip install Twisted最后命令行工具上还是继续报错,安装失败啊(pip install Twisted[windows_platform]这个命令也试过,没有什么用的)。 安装Twisted模块 在这里告诉大家一个方法安装Twisted模块的方法啊,首先需要先安装wheel模块

Python爬虫连载4-Error模块、Useragent详解

╄→尐↘猪︶ㄣ 提交于 2020-01-21 00:22:08
一、error 1.URLError产生的原因:(1)没有网络;(2)服务器连接失败;(3)不知道指定服务器;(4)是OSError的子类 from urllib import request,error ​ if __name__ == "__main__": url = "http://www.baidu.comfdsfdfsf" try: req = request.Request(url) rsp = request.urlopen(req) html = rsp.read().decode() print(html) except error.URLError as e: print("URLError:{0}".format(e.reason)) print("URLError:{0}".format(e)) except Exception as e: print(e) 2.HTTPError是URLError的一个子类 3.两者区别:HTTPError是对应的HTTP请求的返回码错误,如果返回错误码码是400以上的,则引发HTTPError;URLError对应的一般时网络出现问题,包括url问题;关系区别:OSError-URLError-HTTPError 二、useragent 1.UserAgent:用户代理,简称UA,属于heads的一部分

Python爬虫 学习笔记

霸气de小男生 提交于 2020-01-20 21:04:53
问题 访问国防科技大学招生网 http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html ,爬取各省市历年分数线信息。 步骤 1.引入 import urllib.request as req import re 2.捕获网页源代码 url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/info/2017/717.html' webpage = req.urlopen(url) # 根据超链访问链接的网页 data = webpage.read() # 读取超链网页数据 data = data.decode('utf-8') # byte类型解码为字符串 这样如果输出data便会得到如下信息: 3.获取所有表格信息 table = re.findall(r'<table(.*?)</table>', data, re.S) 表格对应如下: 4.预处理 firsttable = table[0] # 取网页中的第一个表格 # 数据清洗,将表中的&nbsp,\u3000,和空格号去掉 firsttable = firsttable.replace(' ', '') firsttable = firsttable.replace('\u3000', '') firsttable =

Python爬虫【五】Scrapy分布式原理笔记

旧巷老猫 提交于 2020-01-20 06:50:55
Scrapy单机架构 在这里scrapy的核心是scrapy引擎,它通过里面的一个调度器来调度一个request的队列,将request发给downloader,然后来执行request请求 但是这些request队列都是维持在本机上的,因此如果要多台主机协同爬取,需要一个request共享的机制——requests队列,在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列。 单主机爬虫架构 调度器负责从队列中调度requests进行爬取,而每台主机分别维护requests队列 分布式爬虫架构 队列用什么维护? 这里一般我们通过Redis为维护,Redis,非关系型数据库,Key-Value形式存储,结构灵活。 是内存中的数据结构存储系统,处理速度快,性能好。提供队列、集合等多种存储结构,方便队列维护。 如何去重?—— Redis集合 redis提供集合数据结构,在redis集合中存储每个request的指纹。 在向request队列中加入Request前先验证这个Request的指纹是否已经加入集合中。 如果已经存在则不添加到request队列中,如果不存在,则将request加入到队列并将指纹加入集合。 如何防止中断?——启动判断 在每台slave的Scrapy启动的时候都会判断当前redis request队列是否为空

【nodeJS爬虫】前端爬虫系列

白昼怎懂夜的黑 提交于 2020-01-20 05:36:32
本文转自 http://www.cnblogs.com/coco1s/p/4954063.html 写这篇 blog 其实一开始我是拒绝的,因为爬虫爬的就是cnblog博客园。搞不好编辑看到了就把我的账号给封了:)。 言归正传,前端同学可能向来对爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 php , python 等。当然这是在 nodejs 前了,nodejs 的出现,使得 Javascript 也可以用来写爬虫了。由于 nodejs 强大的异步特性,让我们可以轻松以异步高并发去爬取网站,当然这里的轻松指的是 cpu 的开销。 要读懂本文,其实只需要有 能看懂 Javascript 及 JQuery 简单的nodejs基础 http 网络抓包 和 URL 基础 本文较长且图多,但如果能耐下心读完本文,你会发现,简单的一个爬虫实现并不难,并且能从中学到很多东西。 本文中的完整的爬虫代码,在 我的github上可以下载 。主要的逻辑代码在 server.js 中,建议边对照代码边往下看。 在详细说爬虫前,先来简单看看要达成的最终目标,入口为 http://www.cnblogs.com/ ,博客园文章列表页每页有20篇文章,最多可以翻到200页。我这个爬虫要做的就是异步并发去爬取这4000篇文章的具体内容,拿到一些我们想要的关键数据。 爬虫流程 看到了最终结果

python3-爬虫爬取知网文献

青春壹個敷衍的年華 提交于 2020-01-20 04:45:17
python爬虫批量爬取知网文献摘要 爬虫需要的库 requests(给服务器发送请求接收目标内容) bs4中的BeautifulSoup(解析内容,缩小目标数据查找范围) re(准确获取目标数据) 分析网页 爬取的目标内容:文献分类目录下的文献摘要 需要通过请求获取的内容:每一页的表格,其中的单个文本链接 打开web开发者工具在网络一栏找到显示目标数据的文件,获取url 对表格进行翻页,获取相应页面url(点击翻页数字查看属性) 对url进行拼接结果如下: https://kns.cnki.net/kns/brief/brief.aspx?curpage= key &RecordsPerPage=50&QueryID= id &ID=&turnpage= key &tpagemode=L&dbPrefix=CFLQ&Fields=&DisplayMode=listmode&PageName=ASP.brief_result_aspx&isinEn=1& 改变 key 值对页面翻页,改变 id 值获得不同标题下的文件信息 单个页面的链接的爬取(方法详见BeautifulSoup的使用) 单个文件url的拼接: https://kns.cnki.net/KCMS/+(爬取到的a标签的href属性) 单个页面中内容的爬取(详见BeautifulSoup的使用) 爬虫工具的使用 文件名