用python为什么叫爬虫第三方库requests抓取淘宝搜索结果页面,response并不是html结构。。

Python常用第三方库(转)
如 果你之前是 windows 程序员,用 MFC 或者 WIN32API 开发界面程序,那进入 Python 国度最好的 GUI
选择应该是 wxPython。它是 wxWidgets 的 Python Bind,与 wxWidgets
的开发完美同步,最为重要的一点是它的消息机制与 MFC 颇为相似,以前在 MFC 的经验完全可以稍作变化就套用在 wxPython
上面。在 WIN32 开发中,最讨厌的一环肯定有 WM_SIZE 消息的处,在主窗口大小变化的时候,保持控件布局在 WIN32
是一件麻烦事。这件事情 wx 解决得非常完美,它的sizer
概念可以让我轻松地在不同窗口尺寸的情况下保持完美的控件布局。另外如果你已经讨厌了 MFC 的 doc-view 模型,wx
也可以给你一个新的选择;如果你非常喜欢 doc-view 模型,放心,在 wx
中仍然可以轻松实现,以前的思想依然可以在这里发挥余热。
wxPython 有两个封装,一个 PythonCard,另一个是 dabo。前者是 wxPython
的有限封装,不支持wxPython 的全部特性,它的目标是让 wxPython 更加 Pythonic。后者比 PythonCard
要庞大不少,确切来说,它应该是一个三层架构的 C/S 模式的开发框架。如果你想开发基于数据库的应用(如 MIS、ERP 等)用
dabo 是一个不错的选择;另外,如果你之前习惯了 VB、VFP、Delphi 等 RAD 开发环境,dabo
并不比这些昂贵的工具差多少哦!
按 照邪恶的 windows 思维,编写的应用如果不编译出一个 .exe 文件恐怕是算不得“软件”的,py2exe 作用正是把你的
.py 脚本变成 .exe 文件,通常它会把脚本打包到一个 .zip 文件中去,但也你可以通过修改
setup.py脚本把所有的脚本、依赖的 dll 等全部打包到一个 exe 中去,看起来跟 VC、VB
编译出来的程序没有什么两样!
如果你的客户需要在 windows 下使用你的应用程序,py2exe 是你不可或缺的工具。我就是用它打包由 wxPython
写的小工具给公司里的游戏策划用的。
脚本的执行效率多少有点差强人意,虽然优化起来并不是难事,但如果有简单的方法,近乎不用修改源代码,那当然值得去关注一下。psyco
的神奇在于它只需要在代码的入口处调用短短两行代码,性能就能提升 40%或更多,真可谓是立竿见影!
如果你的客户觉得你的程序有点慢,敬请不要急着去优化代码,psyco 或许能让他立即改变看法。psyco 堪称 Python 的
jit,有许多潜力可以挖掘,如果剩下来给你优化性能的时间已经不多,请马上去阅读它的手册,有许多招儿轻松优化性能。
PIL 是 Python 的图像处理库,我的看法是强到没得说,简单到没得说。它可以打开数十种图像格式,常见的jpg/png/bmp
等当然不在话下;此外还提供许多图像处理函数,如图像增强、滤波算法等。
这 是 Python 对开源数据库 Mysql
的支持,官网在http://sourceforge.net/projects/mysql-python。支持 Mysql
3.23-5.1 全系列版本,Python 版本的要求是 2.3-2.5。MySQLdb 是 Python DB API-2.0
的实现,现在已经很成熟了。最新的版本是 1.2.2 。
如果从事服务器开发,那少不得跟数据库连接池打交道,这时你可以使用 DBUtils 或 jonpy 两个开源程序库。其中 DBUtils
是一套数据库连接池库,而 jonpy 则包括了 CGI 以及数据库连接池等多个功能,请在阅读手册后选择合适的自己库。
pyprocessing
Python 解释器里的 GIL(全局解释器锁)使得 Python
在多核时代有点尴尬——这个支持原生线程的脚本语言竟然不能通过多线程利用多个 CPU 内核同时并发计算。pyprocessing
没有尝试去除 GIL,而是剑走偏锋,尝试从多进程的方式来帮助 Python 走出困境。结果就是使用 pyprocessing
创建进程和进程间通信不仅像使用内置的 threading 模块那么简单,甚至还更加简单。pyprocessing 不仅可以通过本机
socket 和管道进行通信,而且封装得极为完美,它的 Queue 实现用起来跟内置的 Queue
没啥两样,但它是一个进程间共享的队列哦!
pyprocessing 在 py2.6 和 py3.0 中已经作为内置模块了,也算是开发社区对 pyprocessing
项目的肯定吧。如果你用 Python 开发服务器应用,特别是网络游戏这样的应用,pyprocessing
怎么可以不去关注一下!
PyQuery (with lxml)
安装方法 pip install pyquery
Python 解析 HTML 时最经常被推荐的是 Beautiful Soup ,而且它的确也表现很好。提供良好的 Python
API,而且很容易在网上找到相关的资料文档,但是当你需要在短时间内解析大量文档时便会碰到性能的问题,简单,但是真的非常慢。
安装方法:pip install dateutil
处理日期很痛苦,多亏有了 dateutil
fuzzywuzzy
安装方法:pip install fuzzywuzzy
fuzzywuzzy
可以让你对两个字符串进行模糊比较,当你需要处理一些人类产生的数据时,这非常有用。下面代码使用Levenshtein
距离比较方法来匹配用户输入数组和可能的选择。
安装方法:pip install watchdog
watchdog 是一个用来监控文件系统事件的 Python API和shell实用工具。
安装方法:pip install sh
sh 可让你调用任意程序,就好象是一个函数一般
安装方法:pip install pattern
Pattern 是 Python 的一个 Web 数据挖掘模块。可用于数据挖掘、自然语言处理、机器学习和网络分析。
安装方法:pip install path.py
当我开始学习 Python 时,os.path 是我最不喜欢的 stdlib 的一部分。尽管在一个目录下创建一组文件很简单。
xlrd,xlwt,openpyxl
用于解析excel模块,前两个适用于2003以前,后面的支持2007.
line_profiler and kernprof
Kern有一个称作line_profiler的不错的项目,我经常使用它查看我的脚步中每行代码多快多频繁的被执行。
想要使用它,你需要通过pip安装该python包:pip install line_profiler
一旦安装完成,你将会使用一个称做“line_profiler”的新模组和一个“kernprof.py”可执行脚本。
memory_profiler
现在我们对计时有了较好的理解,那么让我们继续弄清楚程序使用了多少内存。我们很幸运,Fabian Pedregosa模仿Robert
Kern的line_profiler实现了一个不错的内存分析器。
首先使用pip安装:
1 $ pip install -U memory_profiler
2 $ pip install psutil
(这里建议安装psutil包,因为它可以大大改善memory_profiler的性能)。
如果遇到网页编码问题试试这个
抛弃optparse和argparse吧,使用docstrings来构建优雅的,可读性强的,并且复杂(如果你需要的话)的命令行界面。IMO2013年创建的最好的库。
称为人类使用的HTTP,是一个处理HTTP请求更为pythonic
的方法,比urllib2更更更好用。口碑可见,他在PyPI上下载已经超过5,000,000次&&。&
是一个快速,简单,轻量级的WSGI微型web框架。几秒内就能构建小型站点和APIs。所有的框架只有一个py文件,你甚至可以放进任意目录。
一个先进的日志记录处理器。他集成了多个现存的日志记录工具,包含了Python标准库。你可以创建普通记录器,按你所想增加内容,使你的日志拥有持久性和可读性。
一个跨平台的Python库和shell工具,可以监视文件系统事件。超级好用,并且容易上手。
可以是你用非常方便的方法来处理数据和时间。设置时区,截取到秒,分,小时,或者甚至使用特殊方法从一个数据迭代到另一个。浏览下文档,里面有很多示例。
是libxml2和libxslt的合体。如果你要处理XML或HTML,lxml是最好的选择。
生成图形库
&生成图表的。
转自&/?p=32
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Python爬虫
作为一个搞数据的人,不会点爬虫真是说不过去。以前曾搞过那么几天,早就忘了,借着一个项目需要抓取点东西便再捡回来了。本篇将介绍使用python, urllib2, re, spynner 抓取淘宝淘女郎的所有写真照片。来个网址: 让我们先对淘女郎有个直观的感受嘛。
1. 抓取 &/json/request_top_list.htm &的淘女郎信息,如:主页url, 用户ID,年龄等等信息。对进一步抓取有用的信息是主页的url 和用户ID。 仔细观察会发现,主页的url里面包含了用户ID。这个信息将为我们后面提供了大大的方便。
2. 通过 用户ID 分析得到该用户相册列表的url,然后抓取用户所有相册的url。
3. 通过 相册的url 分析得到该相册照片列表的url,然后就随心所欲的抓取这些照片吧。
思路分析:
三个步骤说来简单,其中的痛苦挣扎只有自己才知道呢。特别是当发现,相册那个网页是动态生成的时候。以前只抓取过静态页面的信息,那天发现urllib2抓取的信息怎么不全的时候我就犯愁了。在Chrome浏览器里F12调出来的调试页面,我能在element里面看到我想要抓取的链接,而在source里却没有,而urllib2只能得到source里的内容,所以死活就是没有我要的连接。这说明这个网页是动态生成的,urllib2无法抓取动态网页的信息。于是昨晚折腾了下spynner这个python的库。
“spynner是一个QtWebKit的客户端,它可以模拟浏览器,完成加载页面、引发事件、填写表单等操作。”
动态网页是在浏览器浏览网页的时候实时从数据库调取数据再加载的,那么只要我们模拟浏览器的操作,那么就通过分析加载完毕的页面得到那些动态加载的链接了。
安装spynner倒是容易直接pip就ok,安装qt和pyqt,sip这些支持库的时候却蛋疼了我一晚上。这儿我就不详细说如何安装了,有安装问题欢迎留言。
糟糕的spynner文档,导致一个load的超时问题就逼的我去看源码。如果哪位朋友有好的spynner文档欢迎分享。
下面是我动态网页信息的代码:
def get_albums_url_dy(self, url):
browser = spynner.Browser()
browser.hide()
resp = browser.load(url)
except spynner.SpynnerTimeout:
browser.wait_load()
page = browser.html.encode('utf-8')
pattern = re.compile('&a href=&.*?(album_id=\d*).*?&')
items = re.findall(pattern, page)
#delete repeats
album_ids = []
for i in items:
if i not in album_ids:
album_ids.append(i)
for i in album_ids:
urls.append('///self/album_photo.htm?user_id=&'+ i)
return urls通过spynner模拟浏览器的行为确实可以让我们抓取到那些动态加载的链接,但由于模拟了整个浏览器的加载行为,所以效率是极其的低下。举个例子,由于MM相册url加载的时候超过了spynner的load的10s限制,导致最初调试的时候一直报错,后来加上了try, except和wait_load()算是解决了这个问题。打开这样一个链接加载时间就在10s左右,要抓取如此多的图片用这个方法得等到淘宝关闭都抓取不完吧。
于是换种思路。
既然动态加载页面那一定也是一个连接,连接到淘宝的某个json格式的列表,就和花里胡哨的淘女郎主页那个链接也被:/json/request_top_list.htm 轻松替代一样。我们是不是也能找到对应某个淘女郎相册的json列表,那样就容易了。于是乎,基于这个想法我再次在Chrome浏览器里按下了F12。呵呵哒。通过在淘女郎相册里换页时,F12里network的显示:
我们成功从一堆杂乱的连接里成功的找到这个打开相册的关键链接!
打开它我们看到:
啊哈,这不就我们想要的嘛。通过遍历所有page我们就可以通过对这个静态页面的分析得到所有相册的url了。
进入相册后,如何找到所有照片的步骤和上面差不多。只要手动分析到json的列表就万事大吉了。
下面上效果图:
所有代码我已上传到csdn资源站了:
欢迎大家指点。
1. Windows文件夹不能含有&.&等特殊符号,一定要在创建文件夹的时候删除这些特殊字符,不然在保存照片的时候就会报错(因为找不到文件夹啦)
2. 页面手动分析的时候注意换行和空格的正则匹配。有时候需要多匹配多个才能得到需要的字符串。
3. 活用F12哦!
现在有时候会因为网络问题导致下载中断,那么难道我们就要重新下载一遍?现在看来我们只能通过更改start和end的index来跳过下载过的。我会继续更新代码增加新的功能,比如对线程下载等。
原文发于博客:
&US&&Pacific Time
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5698次
排名:千里之外
原创:15篇
(7)(1)(3)(2)(2)爬虫技术可以抓取到淘宝天猫京东订单页的数据吗?
爬虫技术能否抓到订单详情页的数据,譬如订单数、客单价、商品数量、价格、实付款这些信息???
按投票排序
有关这个问题。前一阵开发过。~~~补充代码地址。应评论里几个知乎网友要求。我把代码放github了。先说一下。这些代码是自己思考和参考了nodejs以及网上很多资料的。也感谢他们。此外代码还一直没时间完善完毕。需要用的人还需要自己努力去完善才能使用。地址:---------------------------补充开始用v8解析的核心就是欺骗网页js和框架。让它以为调用的对象就是浏览器对象。你构造的对象的属性和方法跟实际浏览器一样即可。这样好处是避开了图片和动画等的下载渲染布局等操作。节省cpu时间。谷歌的爬虫据说基于c++做的。而python有pyv8的库叫什么忘了。原理类同,只是效率低一些罢了。具体我没用过,可以咨询参考用过的高手。谢谢---------------------------补充结束普通的爬虫都是针对http的协议做的。但淘宝京东大量的ajax操作。因此需要带js引擎的爬虫才能应对。浏览器webkit可以。但自带了渲染。cpu消耗太高。并且多进程多线程时候复杂。因此我用v8来实现ajax网页的抓取。基本原理是自己来实现ajax和html对象。提供给网页代码一个模拟的浏览器环境。context。这样可以运行成功。但对所有html对象的支持是比较麻烦的。有些对象需要保持。有的回调如settimeout。但好处是可以后台运行。解析自定义js脚本。去抓取内容。目前普通网页ajax都没问题了。但淘宝用的自己的js框架。京东是jquery。还有一些个别函数未能支持。继续努力中。原则上是都能抓到的。
谢邀!从技术角度上说浏览器能够看到的数据都可以获取到。所以这类需求主要的问题是效率和账号,没有账号不能获取这些数据,抓取数据需要重绘整个页面,所以效率非常低。
前提肯定是你在浏览器里有权限看到这些数据。看你的意思是作为商户端要自己的销售数据,那就真的别麻烦写爬虫了,淘宝现有的API完全能满足你的要求,去淘宝开放平台看API文档。如果你的商户规模不大,还不到淘宝对自有系统接入的要求,那就去应用商城买第三方服务把,授权后就能在三方服务里看到自己数据。如果你的意思是淘宝买家的历史订单数据,那就稍有不同。原来淘宝是有买家API的,但这个API已经不在可用了,所以这个就必须用爬虫实现。方法从思路上来说分两种,一种就是楼上的
水滴涟漪终消散 提到的,用webkit容器,无论是用v8,phantomjs等等,都是这个路子,说穿了就是一个可以用程序交互小小浏览器环境还有一种就稍微巧妙一点,淘宝的话,你可以研究一下他的ajax访问机制,他是有一个特定ajax接口用于获取订单信息的,只是这个接口的调用有安全验证,验证内容是你当前登录后的cookie和一个非常复杂的js库算出来的一串验证码。自己本地实现这个js的算法基本不可能,比较取巧的做法就是,webkit容器访问一次淘宝,得到访问这个订单ajax接口所需的安全认证信息,然后就可以抛开webkit容易,用最普通的http请求任意访问自己的订单信息了,只要浏览器上能看到的,全都能访问到,甚至还有些浏览器上没显示的信息,哈哈至于京东,同时做过京东和淘宝爬虫的人应该都知道,京东的反爬机制和安全机制,和淘宝比起来,那查的不是一星半点,如果你能搞定淘宝,京东完全不在话下。顺带说一句,包括商品信息,订单信息,评论信息在内的电商平台爬虫,其实现难度由高到底是:淘宝C店 & 天猫商城 & 京东商城对,你没看错,淘宝和天猫是不同的,而且淘宝比天猫难搞多了,试试就知道,找对方式后,天猫基本可以随便虐,但淘宝却能分分钟教会你重新做程序员
有个软件叫 情报通。
可以,只不过你需要具备特别的抓取技巧,这其中,最难的是如何绕过或者说击败淘宝和京东的安全策略以及反爬虫策略!而且淘宝和京东貌似迭代很快,三五天就一个新版本。需要持续维护这个爬虫。总之,只要你的爬虫够人性化就可以。
关于以上的要求,市面上有两类产品,一种是官方的软件,像淘宝的魔方提供直通车选词功能、进店客户流失到哪(个人感觉魔方的功能更适合数据分析,却要并入生意参谋)、生意经之类,这类产品提供数据较为准确、功能多,但功能多也意味着繁杂,哪有那么多时间去关注那些没有多大用处的数据,同时官方数据要是出现错误也很难发现和纠正;第二张钟产品像三方软件 情报通、知己知彼,三方软件自然提供的服务要好于官方产品,三方产品之间也存在较大差距(良莠不齐嘛)像某知己知彼就是仿照某情报通和魔方,某知己知彼的提供的数据准确性和以前比有点起色了。再说下某 情报通,提供的功能蛮实用的(三方必须专业嘛,以输入法为例,要是搜狗输入法、百度输入法不方便,中国windows用户哪会抛弃微软官方输入法呢),数据还是蛮准确的,关键是发现问题对方能不停的去更新(收费那么贵,必须服务好)。总结一下:小用户弄个自带的魔方足够,要是想做大点,可以去试试情报通。码字好累,要探讨找我微博号:古斯古
我都是在这直接买数据
爬虫么,不就是去偷数据,电商页面不能解析……不还是有api用么,多方便,一点小遗憾→_→有的要钱
没有抓不到的数据,只有不努力的爬虫,淘宝京东这种都是有专门的反爬虫部门的
已有帐号?
社交帐号登录
无法登录?
社交帐号登录想要用python(python3)实现一个爬虫,来完成自己的一些需求。参考网上的资料,发现对自己而言有两种待选的方案:1. 使用scrapy框架
都说该框架功能强大,实现简单。但是不兼容python3,2. 使用requests 和 bs4等库来自己实现
相比方案一,可能要自己多写好多代码,以及性能可能不如开源的框架。由于自己学习的python3(好多人说python3 才是趋势,所以没有学习python2),如果采用方案一,会有scrapy对python3 的支持不够好(虽说现在scrapy官网上说对python3的支持正在进行中,但不相等),希望熟悉的人回答一下 scrapy对python3的支持到底如何?; 如果采用方案二,那么想问 ,如果我想要利用 requests, bs4等库 实现一个简单版的 scrapy, 困难有多大,需要学习那些东西?
真的不要纠结2还是3,对于爬虫来讲,感觉不到区别,这些都不是事儿,除了编码和print。而且requests和bs4都支持吧(待我确定下)。那什么是事儿呢?1 限制ip用requests代理,买代理,或者网上免费代理2 伪装成浏览器requests切换user agent3 先登录,保存cookiesrequests用session先post拿到cookies,再爬4 URL参数太多,不明白什么意思webdriver和phantomjs5 JavaScript和ajax问题浏览器f12分析请求规律,直接requests请求。或者用webdriver和phantomjs,如果用scrapy的话,用scrapyjs6 爬的太慢多线程,别说gil,一般是网络io慢,cpu等io7 还是慢scrapy异步(做过几个项目了,挺好用的),pyspider(这个支持Python3)8 还是慢分布式(暂时还没涉及),redis,scrapyd9 验证码对不起,帮不了你。简单的可以pil,灰度二值化切割识别10 如果你想自己实现异步请求的话grequests不错爪机回复,待补充。ps 不知不觉自己用Python有一段时间了,写过爬虫,web,最近用Python挣了点钱
不要纠结python2 还是python3 的问题。&br&学习编程不光是学习语法,是学习计算思维,编程思路。python2和python3 差别不是很大。&br&&br&看你的情况,建议先学习标准库或requests 这个库学习爬虫,先学会抓包,模拟post、get ,自动填表等基本技能,再学习scrapy框架。&br&&br&建议看看 黄哥主讲的python爬虫联想词视频,学习一下基础知识。&br&&br&搜索“python爬虫联想词视频” 有播放地址。&br&&br&加油!
不要纠结python2 还是python3 的问题。学习编程不光是学习语法,是学习计算思维,编程思路。python2和python3 差别不是很大。看你的情况,建议先学习标准库或requests 这个库学习爬虫,先学会抓包,模拟post、get ,自动填表等基本技能,再学习scrapy框架。…
前几天刚刚用几个库自己写了一个简单的爬虫,不过因为我是用的Python2.7,所以可能有些不同,先说说我的体验&br&&br&2个多月前学习了Scrapy框架,之后自己写了几个爬虫,基本是BaseSpider,CrawlSpider,当时感觉写一个爬虫很简单,有一个现成的框架摆在那里,只要自己定义要抓取的类和抓取的函数就行了&br&&br&之后由于其他事情Python学习断了一个多月,之后看《Python核心编程》,讲到爬虫,就想到为什么不自己写一个,于是开始做。&br&&br&这时候才体会到写爬虫并不像自己想的那么简单,得自己定义诸如存储数据类,同域名保留函数,数据去重等一系列问题,最后用两种方案写出来,一个是定义一个类,一个是只用函数,不过二者基本上是类似的,当然还有一系列问题没有解决,目前的功能是根据输入的网址和爬取深度来爬取网址,不过基本雏形出来了,以后慢慢解决&br&&br&个人建议先学习Scrapy,我能感受到的最大的好处就是学习了正则,以至于后来自己写爬虫提取网址直接用正则了,其他的什么库都没有用&br&&br&学完Scrapy后,试着自己写一个爬虫,因为这时候你对爬虫的基本操作流程已经有所掌握,照猫画虎还不会么,安题主所说,用request和bs4库是肯定不够的,不过不要急着学库,到时候需要了再去查(我个人是喜欢用正则,所以我自己写的爬虫只是用了re,当然不可否认上面两个也很强大,个人喜好而已)写的过程肯定会遇到问题,比如数据存放,去重,抓取,一个一个解决,对提升自己绝对有好处&br&&br&看着自己写的爬虫跑网页,也是很有成就感的
前几天刚刚用几个库自己写了一个简单的爬虫,不过因为我是用的Python2.7,所以可能有些不同,先说说我的体验2个多月前学习了Scrapy框架,之后自己写了几个爬虫,基本是BaseSpider,CrawlSpider,当时感觉写一个爬虫很简单,有一个现成的框架摆在那里,只要…
已有帐号?
社交帐号登录
无法登录?
社交帐号登录
life is 2 short

我要回帖

更多关于 python为什么叫爬虫 的文章

 

随机推荐