1. 最基本的抓取

抓取大多数情况属于get请求,即直接从对方服务器上获取数据。

首先,Python中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取。另外,requests也是非常有用的包,与此类似的,还有httplib2等等。

Requests:import requestsresponse = requests.get(url)content = requests.get(url).contentprint "response headers:", response.headersprint "content:", content
Urllib2:import urllib2response = urllib2.urlopen(url)content = urllib2.urlopen(url).read()print "response headers:", response.headersprint "content:", content
Httplib2:import httplib2http = httplib2.Http()response_headers, content = http.request(url, 'GET')print "response headers:", response_headersprint "content:", content

此外,对于带有查询字段的url,get请求一般会将来请求的数据附在url之后,以?分割url和传输数据,多个参数用&连接。

data = {'data1':'XXXXX', 'data2':'XXXXX'}
Requests:data为dict,jsonimport requestsresponse = requests.get(url=url, params=data)
Urllib2:data为stringimport urllib, urllib2    data = urllib.urlencode(data)full_url = url+'?'+dataresponse = urllib2.urlopen(full_url)

抓取网易新闻排行榜项目一些说明:

  • 使用urllib2或requests包来爬取页面。

  • 使用正则表达式分析一级页面,使用Xpath来分析二级页面。

  • 将得到的标题和链接,保存为本地文件。

代码分享:

# -*- coding: utf-8 -*-
import os
import sys
import urllib2
import requests
import re
from lxml import etreedef StringListSave(save_path, filename, slist):if not os.path.exists(save_path):os.makedirs(save_path)path = save_path+"/"+filename+".txt"with open(path, "w+") as fp:for s in slist:fp.write("%s\t\t%s\n" % (s[0].encode("utf8"), s[1].encode("utf8")))def Page_Info(myPage):'''Regex'''mypage_Info = re.findall(r'<div class="titleBar" id=".*?"><h2>(.*?)</h2><div class="more"><a href="(.*?)">.*?</a></div></div>', myPage, re.S)return mypage_Infodef New_Page_Info(new_page):'''Regex(slowly) or Xpath(fast)'''# new_page_Info = re.findall(r'<td class=".*?">.*?<a href="(.*?)\.html".*?>(.*?)</a></td>', new_page, re.S)# # new_page_Info = re.findall(r'<td class=".*?">.*?<a href="(.*?)">(.*?)</a></td>', new_page, re.S) # bugs# results = []# for url, item in new_page_Info:#     results.append((item, url+".html"))# return resultsdom = etree.HTML(new_page)new_items = dom.xpath('//tr/td/a/text()')new_urls = dom.xpath('//tr/td/a/@href')assert(len(new_items) == len(new_urls))return zip(new_items, new_urls)def Spider(url):i = 0print "downloading ", urlmyPage = requests.get(url).content.decode("gbk")# myPage = urllib2.urlopen(url).read().decode("gbk")myPageResults = Page_Info(myPage)save_path = u"网易新闻抓取"filename = str(i)+"_"+u"新闻排行榜"StringListSave(save_path, filename, myPageResults)i += 1for item, url in myPageResults:print "downloading ", urlnew_page = requests.get(url).content.decode("gbk")# new_page = urllib2.urlopen(url).read().decode("gbk")newPageResults = New_Page_Info(new_page)filename = str(i)+"_"+itemStringListSave(save_path, filename, newPageResults)i += 1if __name__ == '__main__':print "start"start_url = "http://news.163.com/rank/"Spider(start_url)print "end"
①2000多本Python电子书有
②Python开发环境安装教程有
③Python400集+自学视频有
④软件开发常用词汇有
⑤Python学习路线图有
⑥项目游戏源码案例分享有
如果你用得到的话可以直接拿走,在我的QQ技术交流群里(技术交流和资源共享,广告勿
入,不要让我搞废你的群)可以自助拿走,群号是924403856。

Python网络爬虫之基本项目:爬取网易新闻排行榜相关推荐

  1. python爬网易新闻_Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧

    Python爬虫实战教程:爬取网易新闻:爬虫精选 高手技巧 发布时间:2020-02-21 17:42:43 前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有, ...

  2. python爬网易新闻_爬虫基本介绍 python3 爬虫爬取网易新闻排行榜

    爬虫基本介绍 1. 什么是爬虫? 爬虫是请求⽹网站并提取数据的⾃自动化程序 2. 爬虫的基本流程 发起请求 通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers ...

  3. 19. python爬虫——基于scrapy框架爬取网易新闻内容

    python爬虫--基于scrapy框架爬取网易新闻内容 1.需求 [前期准备] 2.分析及代码实现 (1)获取五大板块详情页url (2)解析每个板块 (3)解析每个模块里的标题中详情页信息 1.需 ...

  4. python爬取热门新闻每日排行_爬取网易新闻排行榜

    #网络爬虫之最基本的爬虫:爬取[网易新闻排行榜](http://news.163.com/rank/) **一些说明:** * 使用urllib2或requests包来爬取页面. * 使用正则表达式分 ...

  5. scrapy获取a标签的连接_python爬虫——基于scrapy框架爬取网易新闻内容

    python爬虫--基于scrapy框架爬取网易新闻内容 1.需求[前期准备] 2.分析及代码实现(1)获取五大板块详情页url(2)解析每个板块(3)解析每个模块里的标题中详情页信息 点击此处,获取 ...

  6. 【python 爬虫】 scrapy 入门--爬取百度新闻排行榜

    scrapy 入门–爬取百度新闻排行榜 环境要求:python2/3(anaconda)scrapy库 开发环境:sublime text + windows cmd 下载scrapy(需要pytho ...

  7. python爬网易新闻_Python爬虫实战教程:爬取网易新闻

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Amauri PS:如有需要Python学习资料的小伙伴可以加点击 ...

  8. Python网络爬虫requests、bs4爬取空姐图片,福利哦

    Scrapy框架很好,也提供了很多扩展点,可以自己编写中间件处理Scrapy的Request和Response.但是可定制化或者可掌控性来说,还是自己写的爬虫更加强一些. 接下来,我们来看一下使用Py ...

  9. Python网络爬虫:利用正则表达式爬取豆瓣电影top250排行前10页电影信息

    在学习了几个常用的爬取包方法后,转入爬取实战. 爬取豆瓣电影早已是练习爬取的常用方式了,网上各种代码也已经很多了,我可能现在还在做这个都太土了,不过没事,毕竟我也才刚入门-- 这次我还是利用正则表达式 ...

最新文章

  1. 举例说明html语言的结构,HTML语言的结构
  2. PHP5 ini配置文件优化
  3. VS2015 编译输出的*.lib,*.dll,*.exe的区别
  4. 合并财务报表无条件抵销分录
  5. VTK:网格之ElevationFilter
  6. java常见_Java 常用类
  7. 数据挖掘之关联分析四(连续属性处理)
  8. java 生成url_JAVA 通过URL生成水印图
  9. 计算机如何进行数值计算
  10. COM ---- Inside COM Note
  11. Vue3.0 directive的使用说明
  12. CSP201609-3炉石传说
  13. 3DMAX 多维材质及对应的UVW展开,UVW贴图
  14. Guava学习之Joiner
  15. 怎么把word里面的彩色图转化为灰度图,直接在word里面操作,无需转其他软件,超简单!(位图和矢量图都可以)
  16. php 起源来由(搜集整理)
  17. High performance server architecture(高性能服务器架构)
  18. MySQL入门系列:数据的插入、删除和更新
  19. 有关ICP(Internet Cache Protocol)协议的总结(二)之RFC2187
  20. 微信小程序开发之图片压缩方案

热门文章

  1. 关于js不生效的问题
  2. 有关思科dhcp snooping的测试总结
  3. haar级联分类器车辆检测_Haar级联分类器Open CV用于人脸检测的术语
  4. 【PA2014】【BZOJ3727】Zadanie
  5. 学习利用ReportLab生成PDF报表 -- RML基础(The Basics)
  6. 新一版的汉文博士(0.5.2.1470)已经发布,下载空间搬家
  7. (多图慎入)图解菜鸟到大拿实现财务自由走向人生巅峰之路
  8. PostgreSql处理Null与空字符串
  9. 中国移动研究院测试开发面经(一面挂)
  10. 如何清理Git提交历史不留痕提交到新的仓库