所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。
类似于使用程序模拟IE浏览器的功能,把URL作为>
在Python中,我们使用urllib2这个组件来抓取网页。
urllib2是Python的一个获取URLs(Uniform Resource Locators)的组件。
它以urlopen函数的形式提供了一个非常简单的接口。
最简单的urllib2的应用代码只需要四行。
我们新建一个文件urllib2_test01py来感受一下urllib2的作用:
import urllib2
response = urllib2urlopen('>
按下F5可以看到运行的结果:
我们可以打开百度主页,右击,选择查看源代码(火狐OR谷歌浏览器均可),会发现也是完全一样的内容。
也就是说,上面这四行代码将我们访问百度时浏览器收到的代码们全部打印了出来。
这就是一个最简单的urllib2的例子。
除了">
>
客户端提出请求,服务端提供应答。
urllib2用一个Request对象来映射你提出的>
在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,
通过调用urlopen并传入Request对象,将返回一个相关请求response对象,
这个应答对象如同一个文件对象,所以你可以在Response中调用read()。
我们新建一个文件urllib2_test02py来感受一下:
import urllib2
req = urllib2Request('>
可以看到输出的内容和test01是一样的。
urllib2使用相同的接口处理所有的URL头。例如你可以像下面那样创建一个ftp请求。
req = urllib2Request('ftp://examplecom/')
在>
1发送data表单数据
这个内容相信做过Web端的都不会陌生,
有时候你希望发送一些数据到URL(通常URL与CGI[通用网关接口]脚本,或其他WEB应用程序挂接)。
在>
这个通常在你提交一个HTML表单时由你的浏览器来做。
并不是所有的POSTs都来源于表单,你能够使用POST提交任意的数据到你自己的程序。
一般的HTML表单,data需要编码成标准形式。然后做为data参数传到Request对象。
编码工作使用urllib的函数而非urllib2。
我们新建一个文件urllib2_test03py来感受一下:
import urllib
import urllib2
url = '>
如果没有传送data参数,urllib2使用GET方式的请求。
GET和POST请求的不同之处是POST请求通常有"副作用",
它们会由于某种途径改变系统状态(例如提交成堆垃圾到你的门口)。
Data同样可以通过在Get请求的URL本身上面编码来传送。
import urllib2
import urllib
data = {}
data['name'] = 'WHY'
data['location'] = 'SDU'
data['language'] = 'Python'
url_values = urlliburlencode(data)
print url_values
name=Somebody+Here&language=Python&location=Northampton
url = '>
这样就实现了Data数据的Get传送。
2设置Headers到>
有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内容到不同的浏览器。
默认的urllib2把自己作为“Python-urllib/xy”(x和y是Python主版本和次版本号,例如Python-urllib/27),
这个身份可能会让站点迷惑,或者干脆不工作。
浏览器确认自己身份是通过User-Agent头,当你创建了一个请求对象,你可以给他一个包含头数据的字典。
下面的例子发送跟上面一样的内容,但把自身模拟成Internet Explorer。
(多谢大家的提醒,现在这个Demo已经不可用了,不过原理还是那样的)。
import urllib
import urllib2
url = '>
以上就是python利用urllib2通过指定的URL抓取网页内容的全部内容,非常简单吧,希望对大家能有所帮助。
使用 python爬虫 爬取页面信息。首先从网络上获取芒果TV网页内容,然后提取网页内容中信息到合适的数据结构 ,最后利用数据结构展示并输出结果。
输入:芒果TV的url链接
输出:电视剧信息输出(电视剧,剧情)
技术路线:request—bs4
定向爬虫:仅对输入url进行爬取,不进行扩展爬取
这里介绍一种简单的方式—BeautifulSoup,利用BeautifulSoup将爬虫获取到的html页面转化为树形结构,然后再根据需要提取标签的内容及属性,不需要正则表达式,下面我简单介绍一下BeautifulSoup安装和使用,实验环境win10+python36+pycharm50,主要内容如下:
1安装bs4,这里直接在cmd窗口输入命令“pipinstallbs4”就行,如下,很快就能安装完毕:
2安装成功后,我们就可以进行测试了,为了更好地说明问题,这里假设爬取的数据如下,内容比较简单:
对应的网页源码结构如下:
根据网页结构,解析代码如下,这里我是本地打开html文件,爬虫的话,直接使用requests请求对应的页面(requestsget(url)),解析的方式是一样的:
程序运行截图如下,已经成功获取到数据:
至此,我们就完成了利用BeautifulSoup来解析网页内容,整个过程不需要正则表达式。总的来说,这种方式很简单,对于常见的简单的页面来说,完全够用了(不过,正则表达式的使用范围比较广,建议还是认真学习一下),网上也有相关教程和资料,感兴趣的可以搜一下,希望以上分享的内容能对你有所帮助吧。
Python爬虫程序本身没有问题,但是却爬取不了数据主要原因如下:
1对方有反爬程序
几乎所网站为了防止一些恶意抓取,会设置反爬程序,你会发现明明很多数据显示在浏览器上,但是却抓取不出来。
2伪装方式没有绕过目标网站反爬
网站都有反爬虫机制,防止爬取数据,爬虫想要爬取数据,就需要隐藏自身的身份,伪装成用户的身份进行访问,如果没有伪装好,被检测到爬虫,也是被会限制的。比如请求头没有设置好,Cookie问题等等。
3IP被限制
爬虫除了IP所有数据都可以伪装,当你的IP访问次数过多之后,就会被限制住,再也无法访问了。这个时候就需要带入ip代理池了。
爬虫属于大数据采集方法其中之一。
大数据采集方式有:网络爬虫、开放数据库、利用软件接口、软件机器人采集等。
1、网络爬虫:模拟客户端发生网络请求,接收请求响应,一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
2、开放数据库:开放数据库方式可以直接从目标数据库中获取需要的数据,准确性高,实时性也有保证,是比较直接、便捷的一种方式。
3、利用软件接口:一种常见的数据对接方式,通过各软件厂商开放数据接口,实现不同软件数据的互联互通。
4、软件机器人采集:既能采集客户端软件数据,也能采集网站网站中的软件数据。
大数据(bigdata),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
以上就是关于如何用python写爬虫来获取网页中所有的文章以及关键词全部的内容,包括:如何用python写爬虫来获取网页中所有的文章以及关键词、爬虫实例——利用BeautifulSoup库爬取页面信息、python爬虫有多少种方式只会最简单的正则表达式,还有其他什么工具吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)