使用 pycurl 获取很多页面?
我想从网站获取许多页面,例如
curl "http://farmsubsidy.org/DE/browse?page=[0000-3603]" -o "de.#1"
在 python 中获取页面数据,而不是磁盘文件。 有人可以发布 pycurl
代码来执行此操作吗,
或者如果可能的话,快速 urllib2
(不是一次一个),
或者说“算了,curl 更快更健壮”?谢谢
I want to get many pages from a website, like
curl "http://farmsubsidy.org/DE/browse?page=[0000-3603]" -o "de.#1"
but get the pages' data in python, not disk files.
Can someone please post pycurl
code to do this,
or fast urllib2
(not one-at-a-time) if that's possible,
or else say "forget it, curl is faster and more robust" ? Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
所以你有两个问题,让我用一个例子向你展示。请注意,pycurl 已经完成了多线程/而不是一次一个,无需您的努力。
最后,这些代码主要基于 pycurl 站点上的示例 =.=
可能您真的应该阅读文档。人们花了大量的时间在上面。
So you have 2 problem and let me show you in one example. Notice the pycurl already did the multithreading/not one-at-a-time w/o your hardwork.
Finally, these code is mainly based on an example on the pycurl site =.=
may be you should really read doc. ppl spend huge time on it.
这是一个基于 urllib2 和线程的解决方案。
here is a solution based on urllib2 and threads.
您可以将其放入 for 循环内的 bash 脚本中。
然而,使用 python 解析每个页面可能会取得更好的成功。
http://www.securitytube.net/爬网以获得乐趣和利润-video.aspx
您将能够获取准确的数据并将其同时保存到数据库中。
http:// www.securitytube.net/Storing-Mined-Data-from-the-Web-for-Fun-and-Profit-video.aspx
You can just put that into a bash script inside a for loop.
However you may have better success at parsing each page using python.
http://www.securitytube.net/Crawling-the-Web-for-Fun-and-Profit-video.aspx
You will be able to get at the exact data and save it at the same time into a db.
http://www.securitytube.net/Storing-Mined-Data-from-the-Web-for-Fun-and-Profit-video.aspx
如果你想使用 python 抓取网站,你应该看看 scrapy http://scrapy.org
If you want to crawl a website using python, you should have a look to scrapy http://scrapy.org
使用 BeautifulSoup4 和 requests -
抓取头页:
创建请求数组:
顺便说一句,请求需要 gevent 来执行此操作。
Using BeautifulSoup4 and requests -
Grab head page:
Create an array of requests:
Requests requires gevent to do this btw.
我可以推荐您使用 human_curl 的异步模块
看示例:
用法非常简单。然后页面成功加载失败的 async_client 调用您的回调。您还可以指定并行连接的数量。
I can recommend you to user async module of human_curl
Look example:
Usage very simple. Then page success loaded of failed async_client call you callback. Also you can specify number on parallel connections.