爬虫 - 技术教程文章

Python爬虫周记之案例篇——基金净值Selenium动态爬虫【代码】【图】

在成功完成基金净值爬虫的爬虫后,简单了解爬虫的一些原理以后,心中不免产生一点困惑——为什么我们不能直接通过Request获取网页的源代码,而是通过查找相关的js文件来爬取数据呢? 有时候我们在用requests抓取页面的时候,得到的结果可能和浏览器中看到的不一样:浏览器中可以看到正常显示的页面数据,但是使用requests得到的结果并没有。这是因为requests获取的都是原始的HTML文档,而浏览器中的页面则是经过JavaScript处理数据...

网络爬虫:URL去重策略之布隆过滤器(BloomFilter)的使用【图】

前言: 最近被网络爬虫中的去重策略所困扰。使用一些其他的“理想”的去重策略,不过在运行过程中总是会不太听话。不过当我发现了BloomFilter这个东西的时候,的确,这里是我目前找到的最靠谱的一种方法。 如果,你说URL去重嘛,有什么难的。那么你可以看完下面的一些问题再说这句话。关于BloomFilter: Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是...

使用Urllib爬虫(1)--简单的将数据爬到内存或硬盘中【代码】【图】

将数据爬取到内存中import urllib import urllib.request import re #打开京东网页并且进行读取,解码格式utf-8,ignore小细节自动略过,大大减少出错率 #将数据爬到内存中 #http://www.jd.com url = "http://www.jd.com" data = urllib.request.urlopen(url).read().decode("utf-8","ignore") pat = "<title>(.*?)</title>"#re.S模式修正符,网页数据往往是多行的,避免多行的影响print(re.compile(pat,re.S).findall(data))将数据...

利用Python实现12306爬虫--查票【代码】【图】

在上一篇文章(http://www.cnblogs.com/fangtaoa/p/8321449.html)中,我们实现了12306爬虫的登录功能,接下来,我们就来实现查票的功能.其实实现查票的功能很简单,简单概括一下我们在浏览器中完成查票时的主要步骤:  1.从哪一站出发  2.终点站是哪里  3.然后选定乘车日期既然我们已经知道是这个步骤了,那我们应该怎样通过程序的形式来实现这个步骤呢?最主要的问题:  1.在程序中我们如何获取站点.不妨想一下,选择的站点是全都保...

【爬虫入门手记03】爬虫解析利器beautifulSoup模块的基本应用【图】

【爬虫入门手记03】爬虫解析利器beautifulSoup模块的基本应用 广东职业技术学院 欧浩源 2017-10-201、引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率。BeautifulSoup可以通过定位HTML件中的标签来格式化和组织复杂的网络信息,尝试化平淡为神奇,用简单易用的Python对象为我们展现XML的信息结构,它会帮你节省数小时甚至数天的工作时间。2、什么是Beau...

如何让你写的爬虫速度像坐火箭一样快【并发请求】【图】

话不多说,我们正式开始。在提升爬虫的速度这方面,最基础、最有效、最直接的操作是什么呢?没错,就是并发请求,如果你的爬虫整个逻辑是顺序执行的,请求的时候永远不会并发,那么你就会遇到像他这样的情况:《小白写了个壁纸的爬虫,能跑起来,但是感觉很慢,不知道怎么回事,请大佬指点》。上面这是我昨天刷V2的时候看到的一个帖子,楼主的代码内容简单概括一下就完全是顺序执行的,每下载一个图片都需要等待当前这个图片下载完...

python 爬虫之为什么使用opener对象以及为什么要创建全局默认的opener对象

基本的urlopen()函数不支持验证、cookie或其他HTTP高级功能。要支持这些功能,必须使用build_opener()函数来创建自己的自定义Opener对象。 install_opener(opener) 安装opener作为urlopen()使用的全局URL opener,即意味着以后调用urlopen()时都会使用安装的opener对象。opener通常是build_opener()创建的opener对象。不需要每次调用都要重新创建了,每次使用URLopen都是高级的、多功能的URLopen。一些复杂情况详细解决办法:1. c...

scrapy进阶(CrawlSpider爬虫__爬取整站小说)【代码】

# -*- coding: utf-8 -*- import scrapy,re from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule from crawlspider.items import CrawlspiderItemclass CrawlspidersSpider(CrawlSpider):name = ‘CrawlSpiders‘allowed_domains = [‘sbiquge.com‘]start_urls = [‘https://www.sbiquge.com/biqukan/‘]rules = (Rule(LinkExtractor(allow="/\d+?_\d+?/",unique=True),callback=‘pa...

Python3爬虫(八) 数据存储之TXT、JSON、CSV【代码】

Infi-chu:http://www.cnblogs.com/Infi-chu/TXT文本存储TXT文本存储,方便,简单,几乎适用于任何平台。但是不利于检索。1.举例:使用requests获得网页源代码,然后使用pyquery解析库解析import requests from pyquery import PyQuery as pqurl = ‘https://www.zhihu.com/explore‘ header = {‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)‘ } html = requests.get(url,headers...

自学爬虫(二)【代码】【图】

POST请求练习通过爬取课程成绩我发现所有的班级名也可以爬取,只是需要提交一个表单,它长这样 既然知道了表单的内容,那我们可以通过urllib.parse.urlencode()方法把它封装到data里面去,访问的时候直接一起丢过去就可以了page=1#可以自己写 data={‘param_value‘:‘100020‘,‘executiveEducationPlanNum‘ :‘2019-2020-2-1‘,‘yearNum‘:‘‘,‘departmentNum‘ :‘‘,‘subjectNum‘:‘‘,‘classNum‘:‘‘,‘page...

新浪网分类资讯爬虫【代码】【图】

从GitHub得到完整项目(https://github.com/daleyzou/sinainfo.git)1、简介爬取新浪网导航页所有下所有大类、小类、小类里的子链接,以及子链接页面的新闻内容。效果演示图:2、代码items.py 1import scrapy2 3 4class SinainfoItem(scrapy.Item):5# 大类的标题和url 6 parentTitle = scrapy.Field()7 parentUrls = scrapy.Field()8 9# 小类的标题和子url 10 subTitle = scrapy.Field()11 subUrls = scrapy....

多线程网页爬虫 python 实现(二)【代码】

#!/usr/bin/env python #coding=utf-8 import threading import urllib import re import timecur=0 last=0 totalcount=0 depth=0 t_mutex=threading.Condition() class Mycrawler:def __init__(self,crawlername,seeds,threadnum):self.crawlername=crawlernameself.seeds=seedsself.crawqueue=CrawQueue()self.initQueue(self.seeds)self.threadnum=threadnumself.threadpools=[]self.logfile=file(‘log2.txt‘,‘w‘)def initQ...

python爬虫-'gbk' codec can't encode character '\xa0' in position 134: illegal multibyte sequence【代码】

UnicodeEncodeError Traceback (most recent call last) <ipython-input-95-45a7accf2da0> in <module>1 fout = open(‘job_desc.txt‘, ‘wt‘)2 for info in job_desc: ----> 3 fout.write("{},\"{}\"\n".format(info[0],info[1].replace("\n","").replace("","")))4 fout.close()UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xa0‘ in position 134: illegal multibyte sequence运...

py爬虫资料【代码】

RequestsPython标准库中提供了:urllib、urllib2、httplib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任...

scrapy爬虫框架(二)【代码】

scrapy爬虫框架(二)将数据保存到json文件中settings.py打开pipeline,其中数字代表优先级(值越小优先级越高)# Configure item pipelines # See https://docs.scrapy.org/en/latest/topics/item-pipeline.html ITEM_PIPELINES = {'qsbkSpider.pipelines.QsbkspiderPipeline': 300, }qsbk.py# -*- coding: utf-8 -*- import scrapyclass QsbkSpider(scrapy.Spider):name = 'qsbk'allowed_domains = ['www.yicommunity.com']start_ur...

python 爬虫(二)【代码】【图】

python 爬虫 Advanced HTML Parsing1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能是像下面这样的  <span class="green" ></span> <span class="red"></span> 通过标签的class我们的程序能够简单的将他们分辨开来。1from urllib.request import urlopen 2from bs4 import BeautifulSoup 34 html = urlopen("http://www.pythonscraping.com/pages...

Python 爬虫 大量数据清洗 ---- sql语句优化【代码】

1. 问题描述在做爬虫的时候,数据量很大,大约有五百百万条数据,假设有个字段是conmany_name(拍卖公司名称),我们现在需要从五百万条数据里面查找出来五十家拍卖公司,  并且要求字段 time(时间) 大于7月一号,小于10月31号。2. 问题解决我们首先想到的解决办法是添加索引,对拍卖公司字段添加索引,但是因为日期是大于7月1号,小于10月31号,在这里用索引的效率很低,  并且要重复的查询出来五十家公司,效率很低,有没有...

python爬虫学习三:python正则表达式

python爬虫学习三:python正则表达式1、正则表达式基础a、正则表达式的大致匹配过程:1、依次拿出表达式和文本中的字符比较2、如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。3、如果表达式中有量词或边界,这个过程会稍微有些不同。b、正则表达式语法学习(参考网页吧)2、re模块python通过模块提供正则表达式的支持。使用re的一般步骤是:s1、先将正则表达式的字符串形式编译成Pattern实例;s2、然后使...

WPF CefSharp 爬虫【图】

1、实际需求 EMS邮件的自动分拣,要分拣首先需要获取邮件的面单号和邮寄地址,现在我们的快递一般都有纸质面单的,如果是直接使用图像识别技术从纸质面单中获取信息,这个开发的成本和实时性都很难保证,获取信息之后还要分别处理,出口件要分到全国的对应地区,进口件要分到所在地区的各个小区。所以要提前获取面单号和邮寄地址两个关键信息,处理完之后,直接把面单号和地址信息传给分拣设备。 2、客观情况 ...

Scrapy爬虫框架的安装和使用【代码】

Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted 14.0、lxml 3.4和pyOpenSSL 0.14。在不同的平台环境下,它所依赖的库也各不相同,所以在安装之前,最好确保把一些基本库安装好。官方网站:https://scrapy.org官方文档:https://docs.scrapy.orgPyPI:https://pypi.python.org/pypi/ScrapyGitHub:https://github.com/scrapy/scrapy中文文档:http://scrapy-chs.readthedocs.io一、安装Scrapy如果你的...

python爬虫边看边学(xpath模块解析)【代码】

xpath模块解析 Xpath是一门在 XML 文档中查找信息的语言。 Xpath可用来在 XML文档中对元素和属性进行遍历。而我们熟知的HTML恰巧属于XML的一个子集。所以完全可以用xpath去查找html中的内容。一、安装lxml模块 pip install lxml 用法:1、将要解析的html内容构造出etree对象。 2、使用etree对象的xpath方法配合xpath表达式来完成对数据的提取。简单案例:from lxml import etreexml=‘‘‘ <bo...

快速学习网页爬虫之python

1.首先获取网页内容的方法 html = requests.get(url,headers = headers,proxies= proxys) #header 指模拟浏览器头,proxys代理IP,requests指Python获取内容的对象2.这样一句话就可以快速获取网页内容了,获取到了网页内容,我们还需要进行抓取我们想要的内容,如果title html = html.text #获取到内容 title = re.search(‘%s(.*?)%s‘%(title_begin,title_end),res,re.S).group(1) #re指python正则的对象 3.这就是最简单的爬虫了...

爬虫之selenium【代码】

selenium介绍selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器1. 环境安装下载安装selenium:pip install selenium下载浏览器驱动程序: http://chromedriver.storage.googleapis.com/index.html查看驱动和浏览器版本的映射关系: http:/...

从教务网爬虫程序到腾讯云上的运行

从教务网爬虫程序到腾讯云上的运行主要内容有以下几方面:pip3以及相关python包的安装mysql数据库的连接以及相关操作腾讯云服务器的设置与连接,文件传输等操作pip3以及相关python包的安装在使用python3时,需要安装对应的pip版本,即pip3.ubuntu系统下的安装方式如下:$ sudo apt-get install python3-pip 安装完成后就可以使用pip3来安装相应的python包,如requests包的安装方式如下:$ sudo pip3 install requests *当pip3从低版...

爬虫之识别验证码组件【代码】

#超级鹰提供的示例代码#!/usr/bin/env python # coding:utf-8import requests from hashlib import md5class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = usernamepassword = password.encode(‘utf8‘)self.password = md5(password).hexdigest()self.soft_id = soft_idself.base_params = {‘user‘: self.username,‘pass2‘: self.password,‘softid‘: self.soft_id,}self....

Python+PyQt5设计B站视频数据爬虫小程序【代码】【图】

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于菜J学Python ,作者J哥 前言目前,市场上有大量 Python图形用户界面(GUI)开发框架可供选择,如wxpython 、pyqt5、Gtk、Tk等。本文将用Python结合PyQt5制作一款B站视频数据爬虫小程序,可以通过输入关键字、页码以及选择存储路径后,下载相应的数据,效果如下: 以下将详细介绍这个GUI工具的制作方法,如需本文...

基于 Scrapy-redis 的分布式爬虫详细设计【代码】【图】

基于 Scrapy-redis 的分布式爬虫设计 目录前言安装环境Debian / Ubuntu / Deepin 下安装Windows 下安装基本使用初始化项目创建爬虫运行爬虫爬取结果进阶使用分布式爬虫anti-anti-spiderURL Filter总结相关资料前言在本篇中,我假定您已经熟悉并安装了 Python3。 如若不然,请参考 Python 入门指南。关于 ScrapyScrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等...

python 爬虫 定时计划任务【代码】

记得以前的windows 任务定时是可以的正常使用的,今天试了下,发现不能正常使用了,任务计划总是挂起。接下来记录下python 爬虫定时任务的几种解决方法。今天是第一篇,后面会陆续更新。首先最容易的是while true死循环挂起,上代码import osimport timeimport sysfrom datetime import datetime, timedeltadef One_Plan():# 设置启动周期Second_update_time = 24 * 60 * 60# 当前时间now_Time = datetime.now()# 设置 任务启动时间...

20171012 动态爬虫爬取预约挂号有号信息【图】

-- 目标:针对医院有些医生有预约号不确定时间点有号,晚了就挂不到了,能有个监测爬去,有号就提醒的机制。可能会用到:scrapy + PhantomJS + Selenium环境: windows10 + vs 2015 + python 2.7安装 : scrapy创建项目: 命令提示符 界面 使用语句 scrapy startproject s_scrapy成功后会提示创建的目录地址cd s_scrapy 进入目录tree /f 树形结构读取目录文件在vs中创建一个python的项目,再增加现有文件s_scrapy到项目中,这样所有...

爬虫基本原理

目录1. 什么是爬虫2. 爬虫工作原理3. 爬虫实现手段3.1 请求库3.2 解析库3.3 存储库3.4 其他工具1. 什么是爬虫爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。2. 爬虫工作原理发送请求模拟浏览器向web服务端获取数据如果服务器能正常响应,则会得到一个Response Response包含:html,json,图片,视频等解析数据解析得到有用的数据保存数据将数据存储到数据库或本地3. 爬虫实现手段3.1 请求库requestsre...