【python】理想论坛爬虫1.08】的更多相关文章

#------------------------------------------------------------------------------------ # 理想论坛爬虫1.08, # 增加断点续传模式,这样可以有空再下载了. # 2018年4月29日 #------------------------------------------------------------------------------------ from bs4 import BeautifulSou…
#------------------------------------------------------------------------------------ # 理想论坛爬虫1.08,用于爬取主贴再爬子贴,数据存到文件里,再由insertDB.py读取插DB # 增加同网址访问五次异常后退出机制 # 2018年4月27日 #--------------------------------------------------------------------------------…
理想论坛有些长贴,针对这些长贴做统计可以知道某ID什么时段更活跃. 爬虫代码为: #------------------------------------------------------------------------------------ # 理想论坛爬虫长贴版1.00,用于爬取单个长贴,数据存到文件里 # 再由insertDB.py读取插DB,sum.py取出分时段数据,statistics chart显示数据 # 2018年4月27日 #--------------------…
下午再接再厉仿照Nodejs版的理想帖子爬虫把Python版的也改造了下,但美中不足的是完成任务的线程数量似乎停滞在100个左右,让人郁闷.原因还待查. 先把代码贴出来吧,也算个阶段性成果. 爬虫代码: # 理想论坛爬虫1.05,用于爬取主贴再爬子贴,数据存到文件里,再由insertDB.py读取插DB from bs4 import BeautifulSoup import requests import threading import re import time import datet…
在 https://www.cnblogs.com/mengyu/p/6759671.html 的启示下,解决了乱码问题,在此向作者表示感谢. 至此,困扰我几天的乱码问题和退出问题都解决了,只是处理速度上有点遗憾. 下面是新代码,较原代码多出了两句 rsp.encoding = 'gb18030' 这是解决中文乱码问题的关键. #------------------------------------------------------------------------------------…
1.01-1.03版本都有多线程争抢DB的问题,线程数一多问题就严重了. 这个版本把各线程要添加数据的SQL放到数组里,等最后一次性完成,这样就好些了.但乱码问题和未全部完成即退出现象还在,而且速度上应该大力提高. 本该就是把DB操作尽可能一次性完成,节约时间又安全,不该是各个线程自己去开关数据库存取的模式.是我事先没考虑好. 现在代码如下: # 理想论坛爬虫1.04,用于爬取主贴再爬子贴 from bs4 import BeautifulSoup import requests import…
//====================================================== // 理想论坛帖子下载爬虫1.09 // 使用断点续传模式,因为网络传输会因各种原因中断 // 2018年5月4日 //====================================================== var http=require("http"); // http模块 var zlib = require('zlib'); // 用于解析gz…
昨天认识到在本期同时起一百个回调/线程后程序会崩溃,造成结果不可信. 于是决定用Python单线程操作,因为它理论上就用主线程跑不会有问题,只是时间长点. 写好程序后,测试了一中午,210个主贴,11974个帖子,11974个文件都生成了. 当然,程序没有一蹴而就,原有的对requests属性不加限制时最多跑个四千条就崩了,参考了 “https://blog.csdn.net/shi_weihappy/article/details/51009602”的做法后才知道要将requests.sess…
用Nodejs把Python实现过的理想论坛爬虫又实现了一遍,但是怎么判断所有回调函数都结束没有好办法,目前的spiderCount==spiderFinished判断法在多页情况下还是会提前中止. 代码如下: //====================================================== // 理想论坛帖子下载爬虫1.01 // 目标网址:http://bbs.tianya.cn/post-no05-308123-1.shtml // 2018年4月16日 /…
在1.06版本时,访问网页采用的时http.request,但调用次数多以后就问题来了. 寻找别的方案时看到了https://cnodejs.org/topic/53142ef833dbcb076d007230,感觉request可以试试,之前在别的地方也听人夸过. 于是替换了saveTopicDetails函数的访问模块,经测试还不错,一万多条数据能跑下来,出错的几率不算高,不过今天也有休盘理想论坛压力轻的利好因素. 代码如下: //==============================…
说明:利用理想论坛爬虫1.07版(http://www.cnblogs.com/xiandedanteng/p/8954115.html) 下载了前十页主贴及子贴,共得到359619条数据,以此数据为基础对2018-4-25一天的情况做统计 #1 2018-4-25 一天的发帖(主贴+子贴)数sql:select count(*) from topic0426 where tdate='2018-4-25'result:5215 #2 2018-4-25 一天的发主贴数sql:select co…
代码: # 单帖爬虫,用于爬取理想论坛帖子得到发帖人,发帖时间和回帖时间,url例子见main函数 from bs4 import BeautifulSoup import requests import threading import re user_agent='Mozilla/4.0 (compatible;MEIE 5.5;windows NT)' headers={'User-Agent':user_agent} # 帖子爬虫类(多线程) class topicCrawler(thr…
在1.01版本中,我发现各回调函数找到数据后再插入数据库有个竞争问题不好解决,如果等所有回调都完成也没有好的处理方法,因为启动不止一处启动了新的TopicSpider实例. 于是我决定把读数据和写DB分开,爬虫负责前一部分,insertDB.js负责后一部分. 这样做避免了爬虫写DB竞争和判断所有回调都结束的难点问题. 而insertDB.js中,等待所有读文件的回调都结束是有办法的,那就是并行化控制,毕竟读各个文件比较简单,易于用task控制. 下面是爬虫代码: //=============…
代码: # 单帖爬虫,用于爬取理想论坛单个帖子得到发帖人,发帖时间和回帖时间并存入数据库,url例子见main函数 from bs4 import BeautifulSoup import requests import threading import re import pymysql user_agent='Mozilla/4.0 (compatible;MEIE 5.5;windows NT)' headers={'User-Agent':user_agent} # 帖子爬虫类(多线程)…
一直想做一个能把理想论坛指定页范围的帖子都能完整下载下来的爬虫,但未能如愿. 主要的障碍在并发数的控制和长时间任务的突然退出,比如想下载前五页的帖子,分析后可得到大约15000个主贴或子贴,如果用回调函数直接在循环中访问是不行的,程序会报Error:socket hang up异常,大约一次只能并发百个左右(其实这个数很神奇的和Python理想爬虫的最高线程数接近了).如果一次性把一万五千个回调都发出来,那连本机的有线网络都会短时间崩塌,路由器的访问互联网的功能也会中断几分钟. 于是采用了Eve…
写以下代码的目的是分析一天中各时段理想论坛中用户发帖回帖的活跃程度,获得结尾那张图表是核心. 以下代码两种爬虫协助,论坛爬虫先爬主贴,爬到主贴后启动帖子爬虫爬子贴,然后把每个子贴的发表时间等存入数据库. 再用一个程序对各个时段中发帖次数进行统计,然后用Excel生产图表. 获取数据的爬虫代码如下: # 论坛爬虫,用于爬取主贴再爬子贴 from bs4 import BeautifulSoup import requests import threading import re import py…
//====================================================== // 理想论坛帖子下载爬虫1.06 // 循环改成了递归,但最多下载千余文件就崩了 // 2018年4月27日 //====================================================== var http=require("http"); // http模块 var zlib = require('zlib'); // 用于解析gzip…
Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓取Python百度百科词条页面以及相关词条页面的标题和简介. 2.分析这个目标,即需要确定抓取这些网站数据的策略. 有三部分需要分析. 1)需要分析这些目标页面的url格式,用来限定我们要抓取页面的范围. 如果这个范围不进行限定的话,我们的爬虫就会抓取互联网上很多不相关的网页,造成资源的浪费. 2)…
基于python的pixiv爬虫 1.目标 在和朋友吹逼过程中,聊到qq群机器人,突发奇想动手做一个p站每日推荐色图的色图机,遂学习爬虫. 目标: 批量下载首页推荐色图. 由于对qq机器人不熟,先利用flask搭键一个网页色图机. 2.流程 3.批量下载 1.分析网页 虽然直接进入pixiv的主页是需要登录的,但是进入排行榜却不需要这个过程. 通过网页源代码定位到图片id <section id="1" class="ranking-item" data-ra…
天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人工什么时候这么低廉了...oh my god ​ ​50十块,你跟我开什么国际玩笑!!不够意外惊喜还是有的,居然是个妹子嘿嘿,哎呀什么钱不钱的多伤感情. 老哥送你一套代码,小妹妹以后你好好学习,不懂得问老哥,然后顺利的家了微信(妹子很漂亮). ​ 废话不多说开干,这个程序最大的难点就是找一个合适的天…
Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip install BeautifulSoup4 BeautifulSoup语法 分为三个部分. 首先根据下载好的html网页字符串,我们创建一个BeautifulSoup这个对象,创建这个对象的同时就将整个文档字符串下载成一个DOM树. 然后根据这个dom树,我们就可以进行各种节点的搜索,这里有两个方法…
Python 开发轻量级爬虫 (imooc总结06--网页解析器) 介绍网页解析器 将互联网的网页获取到本地以后,我们需要对它们进行解析才能够提取出我们需要的内容. 也就是说网页解析器是从网页中提取有价值数据的一种工具,对于搜索引擎来说它会提取出网页所有的url,用于后续的访问. 但是,对于我们定向爬虫来说,除了提取出待爬取的url之外,会提取出我们感兴趣的想要的有价值的数据. 也就是说,网页解析器会以下载好的HTML网页字符串作为输入,然后提取出有价值的数据和新的待爬取的url列表. Pyth…
Python 开发轻量级爬虫 (imooc总结05--网页下载器) 介绍网页下载器 网页下载器是将互联网上url对应的网页下载到本地的工具.因为将网页下载到本地才能进行后续的分析处理,可以说网页下载器是爬虫的核心组件. 网页下载器类似于网页浏览器,会将url对应的互联网网页,以HTML的形式下载到本地存储一个本地文件或者本地字符串,然后才能进行后续的分析和处理. Python有哪几种网页下载器呢? Urllib2 – python官方的基础模块,它支持直接的url下载, 或者说向网页提交一些需要…
Python 开发轻量级爬虫 (imooc总结04--url管理器) 介绍抓取URL管理器 url管理器用来管理待抓取url集合和已抓取url集合. 这里有一个问题,遇到一个url,我们就抓取它的内容,为什么还要对url进行管理呢? 是为了防止重复抓取.防止循环抓取. 我们都知道,每一个网页都有很多指向其它网页的url,其它网页的url也会指向本网页.这样不同url之间就存在一种循环指向的问题. 如果不对这些url进行管理,那么我们的爬虫就在循环不断抓取这两个url,形成一个死循环.重复抓取.循…
Python 开发轻量级爬虫 (imooc总结03--简单的爬虫架构) 现在来看一下一个简单的爬虫架构. 要实现一个简单的爬虫,有哪些方面需要考虑呢? 首先需要一个爬虫调度端,来启动爬虫.停止爬虫.监视爬虫的运行情况. 在爬虫程序中有三个模块.首先url管理器来对将要爬取的url和已经爬取过的url这两个数据的进行管理. 从url管理器中取出一个待爬取的url将其传送给网页下载器,下载器将指定的网页下载下来存储成一个字符串,这个字符串会传送给网页解析器进行解析, 一方面会解析出有价值的数据,另一…
Python 开发轻量级爬虫 (imooc总结02--爬虫简介) 爬虫简介 首先爬虫是什么?它是一段自动抓取互联网信息的程序. 什么意思呢? 互联网由各种各样的的网页组成,每一个网页都有对应的url,而url页面上又有很多指向其它页面的url,这些url之间相互指向的关系, 就形成了一个网状,这就是互联网. 正常情况下,我们使用人工的方式,从互联网上获取我们需要的感兴趣的信息.那有没有一种方法,我们设定了一个主题,设定一个感兴趣的目标, 可以自动从互联网上获取我们所需要的数据呢?这就是爬虫. 爬…
Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访问,有些网页是 使用了Ajax异步加载的内容,这些网页的抓取就会比较复杂. 这里只会考虑不需要登录的静态加载网页的抓取. 课程包含以下内容: 1.爬虫简介 介绍爬虫是什么?它实现了什么功能? 2.简单爬虫架构 介绍简单的爬虫架构,架构中包含了哪些模块,这些模块怎么组装在一起完成整个爬取任务的.但该架…
问题背景:指定爬虫depth.线程数, python实现并行爬虫   思路:    单线程 实现爬虫类Fetcher                 多线程 threading.Thread去调Fetcher   方法:Fetcher 中,用urllib.urlopen打开指定url,读取信息: response = urllib.urlopen(self.url) content = response.read() 但是这样有问题, 比如对于www.sina.com来说,读出来的content…
Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver) selenium2支持通过驱动无界面浏览器(HtmlUnit,PhantomJs) 二.安装 Windows 第一种方法是:下载源码安装,下载地址(https://pypi.python.org/py…
最近在学习python,正如大家所知,python在网络爬虫方面有着广泛的应用,下面是一个利用python程序抓取网络图片的简单程序,可以批量下载一个网站更新的图片,其中使用了代理IP的技术. import urllib.request import os import random def url_open(url): req=urllib.request.Request(url) #为请求设置user-agent,使得程序看起来更像一个人类 req.add_header('User-Agen…