python爬虫

怎么来爬取代理服务器ip地址?

吃可爱长大的小学妹 提交于 2020-12-19 14:47:52
由于我之前要搞去转盘网( http://www.quzhuanpan.com ),为了避免度娘禁爬虫,所以必须要先爬取一定的代理,现在将爬取代理的代码分享给大家。 数据库的话这里我就不分享了,可以看看sql的插入过程自己建就可以。 代码: #coding:utf-8 import json import urllib, urllib2 import datetime import time from Queue import Queue from bs4 import BeautifulSoup import MySQLdb as mdb DB_HOST = '127.0.0.1' DB_USER = 'root' DB_PASS = 'root' ID=0 ST=50 uk='3758096603' classify="nn" proxy = {u'http':u'222.39.64.13:8118'} class ProxyServer: def __init__(self): self.dbconn = mdb.connect(DB_HOST, DB_USER, DB_PASS, 'ebook', charset='utf8') self.dbconn.autocommit(False) self.next_proxy_set = set() self.chance=0

Python爬虫案例演示:Python多线程、多进程、协程

安稳与你 提交于 2020-04-07 15:32:41
很多时候我们写了一个爬虫,实现了需求后会发现了很多值得改进的地方,其中很重要的一点就是爬取速度。本文 就通过代码讲解如何使用 多进程、多线程、协程 来提升爬取速度。注意:我们不深入介绍理论和原理,一切都在代码中。 二、同步 首先我们写一个简化的爬虫,对各个功能细分,有意识进行函数式编程。下面代码的目的是访问300次百度页面并返回状态码,其中 parse_1 函数可以设定循环次数,每次循环将当前循环数(从0开始)和url传入 parse_2 函数。 import requestsdef parse_1(): url = 'https://www.baidu.com' for i in range(300): parse_2(url)def parse_2(url): response = requests.get(url) print(response.status_code)if __name__ == '__main__': parse_1() 性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待 示例代码就是典型的串行逻辑, parse_1 将url和循环数传递给 parse_2 , parse_2 请求并返回状态码后 parse_1 继续迭代一次,重复之前步骤 三、多线程 因为CPU在执行程序时每个时间刻度上只会存在一个线程

一个简单的开源PHP爬虫框架『Phpfetcher』

情到浓时终转凉″ 提交于 2020-04-06 22:30:09
一个简单的开源PHP爬虫框架『Phpfetcher』 5.00 / 5 5 1 / 5 2 / 5 3 / 5 4 / 5 5 / 5 1 vote, 5.00 avg. rating ( 98 % score) 转载请注明: 吹水小镇 | reetsee.com 原文链接地址: http://blog.reetsee.com/archives/366 好久不见了!我终于又写一篇日志了,本来有很多流水帐想发但是感觉没营养,就作罢了。 今天我主要分享一个简单的PHP爬虫框架,名字叫: Phpfetcher 项目的地址是: https://github.com/fanfank/phpfetcher 这个框架的作者是:reetsee.xu,即吹水。 把整个项目下载下来后,在Linux下的终端直接执行 demo文件夹下的single_page.php 即可看到效果。不过在执行demo文件前,先设置一下你的终端编码为UTF-8以免显示乱码: export.UTF-8 ———————————————————————————————— 0 背景 背景是这样的目前吹水新闻( http://news.reetsee.com )下的内容全部由Python的爬虫抓取,使用的框架是Python的 Scrapy ,而吹水新闻目前是运行在 BAE (百度应用引擎)下的,每个月还需要交钱

25 -2 正则爬虫例子

流过昼夜 提交于 2020-04-06 22:00:04
一、导入库 import re from urllib.request import urlopen # 内置的包 来获取网页的源代码 字符串 urlopen 来获取网页的源代码 字符串 res = urlopen('https://www.cnblogs.com/zhuangdd/p/12644081.html') print(res.read().decode('utf-8')) —————————————————————————————— <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="referrer" content="origin" /> <meta property="og:description" content="帮助学习的工具 http://tool.chinaz.com/regex/ 字符组 []在一个字符的位置上能出现的内容[1bc] 是一个范围[0-9][A-Z][a-z] 匹配三个字符[abc0-9]" /> <meta http-equiv="Cache-Control" content="no

Python爬虫小实例:爬高校排名

十年热恋 提交于 2020-04-06 20:22:57
程序来源:中国大学MOOC网《 网络爬虫与信息提取课程 》。 程序目的:获取 大学排名网页 内容,并格式化输出。 读懂以下程序需提前了解requests库和BeautifulSoup库,在《 网络爬虫与信息提取课程 》有提供相关知识。 from bs4 import BeautifulSoup import bs4 import requests def getHTMLText(url): try: r = requests.get(url) # 得到的r是一个包含服务器资源的Response对象 r.raise_for_status() # 如果状态码不是200,则抛出异常 r.encoding = r.apparent_encoding return r.text except: return '' def fillUnivList(ulist, html): soup = BeautifulSoup(html, 'html.parser') # 解析html文档的内容 for tr in soup.find('tbody').children: # 循环遍历'tbody'标签中的所有儿子标签或字符串 if isinstance(tr, bs4.element.Tag): # 如果是标签 tds = tr('td') # 找到该标签下的所有'td'标签,返回形式为列表

第一次写python爬虫

佐手、 提交于 2020-04-06 08:32:26
花了4天终于把写完了把国内的几个漏洞平台爬完了,第一次写py,之前一直都在说学习,然后这周任务是把国内的漏洞信息爬取一下。花了1天学PY,剩下的1天一个。期间学习到了很多。总结如下: ==================================================================== ===================================================================================================== 期间用了几个不错的类库: urllib2 re chardet sys bs4 BeautifulSoup requests json 比如获取某个标签beautifulsoup,find/findAll/find_all 获取标签的内容XXX.contents[i] 还有AJAX的爬虫:requests.post()期间用了这个方法和别的来爬的时候需要POST,但是一直是GET,纠结了一个晚上,最后问了腾讯某小伙伴解决了问题 只要是data=xxx 都会使用urlencode编码,所以一直是GET 返回的是JSON,如果用字符串处理的话相当麻烦,问了长亭的朋友,推荐用了Json的类库(爬AJAX的时候最好设置个头) result=requests.post(url

Scrapy爬取女神照片

独自空忆成欢 提交于 2020-04-06 05:56:19
使用Scrapy趴一趴美女图 Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和 自动化测试 。 Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。 Scratch,是抓取的意思,这个Python的爬虫框架叫Scrapy,大概也是这个意思吧,就叫它:小刮刮吧。 Scrapy 使用了 Twisted异步网络库来处理网络通讯。整体架构大致如下: Scrapy主要包括了以下组件: 引擎(Scrapy) 用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler) 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 下载器(Downloader) 用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的) 爬虫(Spiders) 爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)

Python-爬虫介绍

試著忘記壹切 提交于 2020-04-06 02:57:02
网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 通俗地讲,我们把互联网比作一张大蜘蛛网,每个站点资源比作蜘蛛网上的一个结点,爬虫就像一只蜘蛛,按照设计好的路线和规则在这张蜘蛛网上找到目标结点,获取资源。 为什么使用爬虫 爬虫技术主要可以帮助我们做两类事情: 一类是数据获取需求,主要针对特定规则下的大数据量的信息获取; 另一类是自动化需求,主要应用在类似信息聚合、搜索等方面。 爬虫的分类 从爬取对象来看,爬虫可以分为通用爬虫和聚焦爬虫两类。 通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为搜索引擎和大型 Web 服务提供商采集数据。 这类网络爬虫的爬取范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低。 例如我们常见的百度和谷歌搜索。我们输入关键词,它们会从全网去找关键词相关的网页,并且按照一定的顺序呈现给我们。 聚焦网络爬虫(Focused Crawler),是指选择性地爬取那些与预先定义好的主题相关页面的网络爬虫。 和通用网络爬虫相比,聚焦爬虫只需要爬取特定的网页,爬取的广度会小很多。例如我们需要爬取东方财富网的基金数据,我们只需要针对东方财富网的页面制定规则爬取就行。 通俗地讲,通用爬虫就类似于一只蜘蛛,需要寻找特定的食物

web-magic + Xpath Java程序员

廉价感情. 提交于 2020-04-05 18:57:24
大学毕业一年收获还是满满的!手动滑稽 今天呢,来记录一个爬虫项目,用的web-magic实现,不说Java和Python那个更强,只看那个代价更小,与现在我而言自然是Java喽!同时呢magic也是参考了Scrapy框架的。 先把git地址掏出来: https://gitee.com/xxxx/magicFetch.git(留言给地址) 言归正传,先说爬虫需要什么:   1、明确要做的事情:爬虫,爬哪个网站。   2、从哪里开始:爬虫的入口(启停配)Spider   3、接下来便是如何进行爬取和爬取结果的处理。 详细:   如何启动,如何配置,如何停止:   Spider.create(new Getxgluo()) .thread(10) //线程,magic是支持多线程的 .addUrl(t) //t:要爬取的网站URL .addPipeline(new MyPipeline()) //添加一个对爬取结果的处理操作类--输出到console .addPipeline(new MyFilePipeline()) //再添加一个对爬取结果的处理操作类--输出到文件 .run(); //爬虫诞生,去吧皮卡丘,把我想要的拿回来.     靓仔,你没猜错,create方法是静态的,所以可以用类名直接调用,run方法就是入口,该方法执行的时候爬虫就启动了。  

【Python3 爬虫】U28_多线程爬取斗图啦的表情包

谁都会走 提交于 2020-04-05 17:12:00
目录 1.需求描述 2.实战代码 2.1 单线程爬取 2.2 多线程版 1.需求描述 爬取斗图啦网站,地址为: https://www.doutula.com/photo/list/ ,网站截图如下: 现在需要按页爬取前2页的表情包,那么接下来直接上代码吧。 2.实战代码 2.1 单线程爬取 from urllib import request import requests from lxml import etree import re import os HEADERS= { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36' } def parse_url(url): response = requests.get(url, headers=HEADERS) text = response.text html_str = etree.HTML(text) imgs = html_str.xpath('//div[@class="page-content text-center"]//a/img[@class!="gif"]') for img in imgs: img