Python爬虫基础(二)urllib2库的get与post方法

urllib2默认只支持HTTP/HTTPS的GET和POST方法一、Get方式      GET请求一般用于我们向服务器获取数据,比如说,我们用百度搜索,在百度搜索框中搜索“秦时明月”,拿到地址栏里有效url为:https://www.baidu.com/s?wd=秦时明月通过抓包得到其get的目标url为:https://www.baidu.com/s?wd=%E7%A7%A6%E6%97%B6%E6%98%8E%E6%9C%88这两个url其实是一样的,wd后面出现的字符串是“秦时明月”的url编码,于是我们可以尝试用默认的Get方式来发送请求。#负责url编码处理importurllibimporturllib2url="http://www.baidu.com/s"word={"wd":"秦时明月"}#转换成url编码格式(字符串)word=urllib.urlencode(word)#url首个分隔符就是?newurl=url+"?"+wordheaders={"Us...

Python爬虫基础(一)urllib2库的基本使用

       爬虫也就是所谓的网络数据采集,是一种通过多种手段收集网络数据的方式,不光是通过与API交互(或者直接与浏览器交互)的方式。最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息。实践中,网络数据采集涉及非常广泛的编程技术和手段,比如数据分析、信息安全等。       要抓取网页数据,要做的就是向服务器发起请求并获取响应,而在Python中,我们可以使用urllib2这个库来实现。下面是一个发生请求并获取服务器响应的简单的例子:#-*-coding:utf-8-*-#导入urllib2库importurllib2#使用urllib2.urlopen()向指定的url发送请求,并返回服务器响应的类文件对象response=urllib2.urlopen("http://www.baidu.com")#类文件对象的read()方法可读取文件全部内容,返回字符串html=r...

Python爬虫scrapy-redis分布式实例(一)

目标任务:将之前新浪网的Scrapy爬虫项目,修改为基于RedisSpider类的scrapy-redis分布式爬虫项目,将数据存入redis数据库。 一、item文件,和之前项目一样不需要改变#-*-coding:utf-8-*-importscrapyimportsysreload(sys)sys.setdefaultencoding("utf-8")classSinanewsItem(scrapy.Item):#大类的标题和urlparentTitle=scrapy.Field()parentUrls=scrapy.Field()#小类的标题和子urlsubTitle=scrapy.Field()subUrls=scrapy.Field()#小类目录存储路径subFilename=scrapy.Field()#小类下的子链接sonUrls=scrapy.Field()#文章标题和内容head=scrapy.Field()content=scrapy.Field() 二、spiders爬虫文件,使用RedisSpider类替换之前的Spider类,其余地方做些许...

Python爬虫框架Scrapy实例(二)

目标任务:使用Scrapy框架爬取新浪网导航页所有大类、小类、小类里的子链接、以及子链接页面的新闻内容,最后保存到本地。大类小类如下图所示:点击国内这个小类,进入页面后效果如下图(部分截图):查看页面元素,得到小类里的子链接如下图所示:有子链接就可以发送请求来访问对应新闻的内容了。 首先创建scrapy项目#创建项目scrapystartprojectsinaNews#创建爬虫scrapygenspidersina"sina.com.cn" 一、根据要爬取的字段创建item文件:#-*-coding:utf-8-*-importscrapyimportsysreload(sys)sys.setdefaultencoding("utf-8")classSinanewsItem(scrapy.Item):#大类的标题和urlparentTitle=scrapy.Field()parentUrls=scrapy.Field()#小类的标题和子urlsubTitle=scrapy.Field()subUrls=scrapy.Field()#小类目录存储路径subFilena...

Python爬虫框架Scrapy实例(一)

目标任务:爬取腾讯社招信息,需要爬取的内容为:职位名称,职位的详情链接,职位类别,招聘人数,工作地点,发布时间。一、创建Scrapy项目scrapystartprojectTencent命令执行后,会创建一个Tencent文件夹,结构如下二、编写item文件,根据需要爬取的内容定义爬取字段#-*-coding:utf-8-*-importscrapyclassTencentItem(scrapy.Item):#职位名positionname=scrapy.Field()#详情连接positionlink=scrapy.Field()#职位类别positionType=scrapy.Field()#招聘人数peopleNum=scrapy.Field()#工作地点workLocation=scrapy.Field()#发布时间publishTime=scrapy.Field()三、编写spider文件进入Tencent目录,使用命令创建一个基础爬虫类:#tencentPostion为爬虫名,tencent.com为爬虫作用范围scrapygenspidertencentPostion"t...

Python爬虫实例(四)网站模拟登陆

一、获取一个有登录信息的Cookie模拟登陆下面以人人网为例,首先使用自己的账号和密码在浏览器登录,然后通过抓包拿到cookie,再将cookie放到请求之中发送请求即可,具体代码如下:#-*-coding:utf-8-*-importurllib2#构建一个已经登录过的用户的headers信息headers={"Host":"www.renren.com","Connection":"keep-alive","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.99Safari/537.36","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","Accept-Language":"zh-CN,zh;q=0.8,en;q=0.6",#添加抓包获取的cook...

Python爬虫实例(三)代理的使用

一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会会禁止这个IP的访问。所以我们需要设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP继续爬取。在Python中,可以使用urllib2中的ProxyHandler来设置使用代理服务器,下面通过代码说明如何来使用代理: importurllib2#构建了两个代理Handler,一个有代理IP,一个没有代理IPhttpproxy_handler=urllib2.ProxyHandler({"http":"124.88.67.81:80"})nullproxy_handler=urllib2.ProxyHandler({})#定义一个代理开关proxySwitch=True#通过urllib2.build_opener()方法使用这些代理Handler对象,创建自定义opener对象#根据代理开关是否打开,使用不同的代理模式ifproxySwitch:opener=urllib2.build_opener(httpproxy_h...

Python爬虫实例(二)使用selenium抓取斗鱼直播平台数据

程序说明:抓取斗鱼直播平台的直播房间号及其观众人数,最后统计出某一时刻的总直播人数和总观众人数。过程分析:一、进入斗鱼首页http://www.douyu.com/directory/all进入平台首页,来到页面底部点击下一页,发现url地址没有发生变化,这样的话再使用urllib2发送请求将获取不到完整数据,这时我们可以使用selenium和PhantomJS来模拟浏览器点击下一页,这样就可以获取完整响应数据了。首先检查下一页元素,如下:<ahref="#"class="shark-pager-next">下一页</a>使用selenium和PhantomJS模拟点击,代码如下:fromseleniumimportwebdriver#使用PhantomJS浏览器创建浏览器对象driver=webdriver.PhantomJS()#使用get方法加载页面driver.get("https://www.douyu.com/directory/all")#class="shark-pager-next"是下一页按钮,click()是模拟点击driver.find_...

Python爬虫实例(一)爬取百度贴吧帖子中的图片

程序功能说明:爬取百度贴吧帖子中的图片,用户输入贴吧名称和要爬取的起始和终止页数即可进行爬取。思路分析:一、指定贴吧url的获取例如我们进入秦时明月吧,提取并分析其有效url如下http://tieba.baidu.com/f?kw=%E7%A7%A6%E6%97%B6%E6%98%8E%E6%9C%88?后面为查询字符串,“%E7%A7%A6%E6%97%B6%E6%98%8E%E6%9C%88“是贴吧名称“秦时明月”的url编码。这样我们就可以通过构造请求进入每一个贴吧了,代码实现如下:importurllib#贴吧url前半部分url="http://tieba.baidu.com/f?"value=raw_input("请输入要爬取的贴吧名称:")#将查询字符串转换为url编码形式key=urllib.urlencode({"kw":value})#组合完整的贴吧urlurl=url+key#查看完整urlprinturl运行程序,这里输入“天行九歌”作为演示,可以得到天行九歌吧的完整链接如下:http:/...

Python爬虫库-Beautiful Soup的使用

如在上一篇文章通过爬虫爬取漫画图片,获取信息纯粹用正则表达式进行处理,这种方式即复杂,代码的可阅读性也低。通过BeautifulSoup库,我们可以将指定的class或id值作为参数,来直接获取到对应标签的相关数据,这样的处理方式简洁明了。当前最新的BeautifulSoup版本为4.4.0,BeautifulSoup3当前已停止维护。BeautifulSoup4可用于Python2.7和Python3.0,本文示例使用的Python版本为2.7。博主使用的是Mac系统,直接通过命令安装库:sudoeasy_installbeautifulsoup4安装完成后,尝试包含库运行:frombs4importBeautifulSoup若没有报错,则说明库已正常安装完成。开始本文会通过这个网页http://reeoo.com来进行示例讲解,如下图所示1.jpgBeautifulSoup对象初始化将一段文档传入BeautifulSoup的构造方法,就能得到一个文档对象。如下代码所示,文档通过请求url获取:#coding:utf-8frombs4importBeautifulSoupimport...

迎娶白富美,走上人生巅峰(python爬虫股票分析)

一.姿势储备  股票交易,线性代数(分析股票),分位数(风险评估)...  finace.yahoo.com雅虎提供几乎所有股票api  www.kaggle.com 有问题找社区  未完待续........

Python爬虫音频数据

本次爬取的是喜马拉雅的热门栏目下全部电台的每个频道的信息和频道中的每个音频数据的各种信息,然后把爬取的数据保存到mongodb以备后续使用。这次数据量在70万左右。音频数据包括音频下载地址,频道信息,简介等等,非常多。昨天进行了人生中第一次面试,对方是一家人工智能大数据公司,我准备在这大二的暑假去实习,他们就要求有爬取过音频数据,所以我就来分析一下喜马拉雅的音频数据爬下来。目前我还在等待三面中,或者是通知最终面试消息。(因为能得到一定肯定,不管成功与否都很开心)IDE:Pycharm2017Python3.6pymongo3.4.0requests2.14.2lxml3.7.2BeautifulSoup4.5.31.首先进入这次爬取的主页面http://www.ximalaya.com/dq/all/ ,可以看到每页12个频道,每个频道下面有很多的音频,有的频道中还有很多分页。抓取计划:循环84个页面,对每个页面解析后抓取每个频道的名称,图片链接,频道链接保存到mongodb。热门频道2.打开开发者模式,分析页面,很快就可以得到想要的数据的位置。下面的代码就实现了抓取全部热门...
代码星球 代码星球·2020-06-14

python爬虫实战——5分钟做个图片自动下载器

  顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤。一般来说,制作一个爬虫需要分以下几个步骤:分析需求(对,需求分析非常重要,不要告诉我你老师没教你)分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?)编写正则表达式或者XPath表达式(就是前面说的那个神器)正式编写python爬虫代码运行:恩,让我输入关键词,让我想想,输入什么好呢?好像有点暴露爱好了。回车好像开始下载了!好赞!,我看看下载的图片,哇瞬间我感觉我又补充了好多表情包....好了,差不多就是这么个东西。"我想要图片,我又不想上网搜“"最好还能自动下载"……这就是需求,好了,我们开始分析需求,至少要实现两个功能,一是搜索图片,二是自动下载。首先,搜索图片,最容易想到的就是爬百度图片的结果,好,那我们就上百度图片看看基本就是这样,还挺漂亮的。我们试着搜一个东西,我打一个暴字,出来一系列搜索结果,这说明什么....随便找一个回车好了,我们已经看到了很多图片了,如果我们能把这里面的图片都爬下来就好了。我们看见网址里有关键词信息我们试着在网址...

Python爬虫之百度API调用

调用百度API获取经纬度信息。importrequestsimportjsonaddress=input('请输入地点:')par={'address':address,'key':'cb649a25c1f81c1451adbeca73623251'}url='http://restapi.amap.com/v3/geocode/geo'res=requests.get(url,par)json_data=json.loads(res.text)geo=json_data['geocodes'][0]['location']longitude=geo.split(',')[0]latitude=geo.split(',')[1]print(longitude,latitude)其实调用API不难,这里是get方法,参数是地址和key,这个key是我在网上找的,应该是可以用的。运行下代码。然后糗事百科的地址处理后,调用API即可获得经纬度,然后利用个人BDP即可完成该图。学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群626062078,我们一起学Python!...

Python爬虫数据处理

设置变量length()函数char_length()replace()函数max()函数1.1、设置变量set@变量名=值set@address='中国-山东省-聊城市-莘县';select@address1.2、length()函数char_length()函数区别selectlength('a'),char_length('a'),length('中'),char_length('中')1.3、replace()函数和length()函数组合set@address='中国-山东省-聊城市-莘县';select@address,replace(@address,'-','')asaddress_1,length(@address)aslen_add1,length(replace(@address,'-',''))aslen_add2,length(@address)-length(replace(@address,'-',''))as_countetl清洗字段时候有明显分割符的如何确定新的数据表增加几个分割出的字段计算出com_industry中最多有几个-符以便确定增加几个字段...
代码星球 代码星球·2020-06-14
首页上一页12345...下一页尾页