GVKun编程网logo

python中的Web抓取urlopen(python 网页抓取)

30

在本文中,您将会了解到关于python中的Web抓取urlopen的新资讯,同时我们还将为您解释python网页抓取的相关在本文中,我们将带你探索python中的Web抓取urlopen的奥秘,分析p

在本文中,您将会了解到关于python中的Web抓取urlopen的新资讯,同时我们还将为您解释python 网页抓取的相关在本文中,我们将带你探索python中的Web抓取urlopen的奥秘,分析python 网页抓取的特点,并给出一些关于PHP中的Web抓取、python urllib urlopen()对象方法/代理的补充说明、Python urllib urlopen不起作用、python urllib.urlopen 为什么要加 http://的实用技巧。

本文目录一览:

python中的Web抓取urlopen(python 网页抓取)

python中的Web抓取urlopen(python 网页抓取)

我正在尝试从以下网站获取数据:http
:
//www.boursorama.com/includes/cours/last_transactions.phtml?symbole=1xEURUS

似乎urlopen没有得到html代码,我也不明白为什么。就像这样:

html = urllib.request.urlopen("http://www.boursorama.com/includes/cours/last_transactions.phtml?symbole=1xEURUS")print (html)

我的代码是正确的,我获得了具有相同代码的其他网页的html源,但似乎无法识别该地址。

它打印:b’‘

也许另一个图书馆更合适?为什么urlopen不返回网页的html代码?帮助谢谢!

答案1

小编典典

我个人写道:

# Python 2.7import urlliburl = ''http://www.boursorama.com/includes/cours/last_transactions.phtml?symbole=1xEURUS''sock = urllib.urlopen(url)content = sock.read() sock.close()print content

Et si tu parlesfrançais,.. bonjour sur stackoverflow.com!

更新1

实际上,我现在喜欢使用以下代码,因为它更快。

# Python 2.7import httplibconn = httplib.HTTPConnection(host=''www.boursorama.com'',timeout=30)req = ''/includes/cours/last_transactions.phtml?symbole=1xEURUS''try:    conn.request(''GET'',req)except:     print ''echec de connexion''content = conn.getresponse().read()print content

将此代码更改httplibhttp.client足以使其适应Python 3。

我确认,使用这两个代码,可以获得获取您感兴趣的数据的源代码:

        <tdwidth="33%" align="center">11:57:44</td>        <tdwidth="33%" align="center">1.4486</td>        <tdwidth="33%" align="center">0</td></tr>                                        <tr>        <td  width="33%" align="center">11:57:43</td>        <td  width="33%" align="center">1.4486</td>        <td  width="33%" align="center">0</td></tr>

更新2

在上面的代码中添加以下代码段,即可提取我想要的数据:

for i,line in enumerate(content.splitlines(True)):    print str(i)+'' ''+repr(line)print ''\n\n''import reregx = re.compile(''\t\t\t\t\t\t<tdwidth="33%" align="center">(\d\d:\d\d:\d\d)</td>\r\n''                  ''\t\t\t\t\t\t<tdwidth="33%" align="center">([\d.]+)</td>\r\n''                  ''\t\t\t\t\t\t<tdwidth="33%" align="center">(\d+)</td>\r\n'')print regx.findall(content)

结果(仅结尾)

............................................................................................................................................................98 ''window.config.graphics = {};\n''99 ''window.config.accordions = {};\n''100 ''\n''101 "window.addEvent(''domready'', function(){\n"102 ''});\n''103 ''</script>\n''104 ''<script type="text/javascript">\n''105 ''\t\t\t\tsas_tmstp = Math.round(Math.random()*10000000000);\n''106 ''\t\t\t\tsas_pageid = "177/(includes/cours/last_transactions)"; // Page : boursorama.com/smartad_test\n''107 ''\t\t\t\tvar sas_formatids = "8968";\n''108 ''\t\t\t\tsas_target = "symb=1xEURUS#"; // TargetingArray\n''109 ''\t\t\t\tdocument.write("<scr"+"ipt src=\\"http://ads.boursorama.com/call2/pubjall/" + sas_pageid + "/" + sas_formatids + "/" + sas_tmstp + "/" + escape(sas_target) + "?\\"></scr"+"ipt>");\t\t\t\t\n''110 ''\t\t\t</script><div id="_smart1"><script language="javascript">sas_script(1,8968);</script></div><script type="text/javascript">\r\n''111 "\twindow.addEvent(''domready'', function(){\r\n"112 ''sas_move(1,8968);\t});\r\n''113 ''</script>\n''114 ''<script type="text/javascript">\n''115 ''var _gaq = _gaq || [];\n''116 "_gaq.push([''_setAccount'', ''UA-1623710-1'']);\n"117 "_gaq.push([''_setDomainName'', ''www.boursorama.com'']);\n"118 "_gaq.push([''_setCustomVar'', 1, ''segment'', ''WEB-VISITOR'']);\n"119 "_gaq.push([''_setCustomVar'', 4, ''version'', ''18'']);\n"120 "_gaq.push([''_trackPageLoadTime'']);\n"121 "_gaq.push([''_trackPageview'']);\n"122 ''(function() {\n''123 "var ga = document.createElement(''script''); ga.type = ''text/javascript''; ga.async = true;\n"124 "ga.src = (''https:'' == document.location.protocol ? ''https://ssl'' : ''http://www'') + ''.google-analytics.com/ga.js'';\n"125 "var s = document.getElementsByTagName(''script'')[0]; s.parentNode.insertBefore(ga, s);\n"126 ''})();\n''127 ''</script>\n''128 ''</body>\n''129 ''</html>''[(''12:25:36'', ''1.4478'', ''0''), (''12:25:33'', ''1.4478'', ''0''), (''12:25:31'', ''1.4478'', ''0''), (''12:25:30'', ''1.4478'', ''0''), (''12:25:30'', ''1.4478'', ''0''), (''12:25:29'', ''1.4478'', ''0'')]

我希望您不打算在外汇交易中“玩”交易:这是快速散布资金的最佳方法之一。

更新3

对不起!我忘记了您使用Python3。因此,我认为您必须这样定义正则表达式:

regx = re.compile( b ‘\ t \ t \ t \ t \ t ......)

PHP中的Web抓取

PHP中的Web抓取

我正在寻找一种方法,可以根据用户在PHP中提供的URL对另一个页面进行小的预览。

我只想检索页面标题,图像(如网站徽标)以及一些文字或说明(如果有)。有没有任何外部库/类的简单方法?谢谢

到目前为止,我已经尝试过使用DOCDocument类,加载HTML并将其显示在屏幕上,但是我认为这不是正确的方法

python urllib urlopen()对象方法/代理的补充说明

python urllib urlopen()对象方法/代理的补充说明

python urllib urlopen()对象方法/代理的补充说明

urllib 是 python 自带的一个抓取网页信息一个接口,他最主要的方法是 urlopen(),是基于 python 的 open() 方法的。下面是主要说明:

urllib.urlopen('网址')

这里传入urlopen()的参数有特别说要求,要遵循一些网络协议,比如http,ftp,也就是说,在网址的开头必须要有http://这样的说明,如:urllib.urlopen('http://www.baidu.com')。

要么就是本地文件,本地文件需要使用file关键字,比如 urllib.urlopen('file:Nowamagic.py'),注意,这里的hello.py是指的是当前的classpath所指定的内容,如果对hello.py这里有什么疑问那一定是python寻找classpath的顺序不是很清楚了,当然也可以直接写全部路径,urllib.urlopen('file:F:\pythontest\Nowamagic.py')。

打开 ftp 文件也是可以的,写法 urllib.urlopen(url='ftp://用户名:密码@ftp地址/') 等。

示例程序:

import urllib
f = urllib.urlopen('file:F:\pythontest\Nowamagic.py')
a = f.read()
print a

如果传入的参数正确,比如该网站可以访问,没有特殊情况(比如需要代理,被墙等),那么将返回一个类似于文件对象的对象。即上面代码中的f,f对象有的方法一些操作方法,使用dir(f):

['__doc__','__init__','__iter__','__module__','__repr__','close','fileno','fp','geturl','headers','info','next','read','readline','readlines','url']

使用read()方法会将所有内容读取出来,并且同时f对象类似于先入先出的数据,在使用f.read()将得不到任何数据,也就是说,得到的数据在这个时候如果想在后面进行任何处理操作的话,需要另外定义一个对象来进行存储。如上例中的a。而info(),geturl()方法,也是基于f这个文档对象的,所以,使用

>>>f.geturl()
 'F://pythontest//Nowamagic.py'

接下来是urllib的代理设置:

import urllib
proxies = {'http':'http://***.***.***.***:1984'}
filehandle = urllib.urlopen('http://www.需要代理才能访问的网站.com/',proxies = proxies)
a = filehandle.read()
print a

以上是最基本代理,即代理访问到该网站,并且能够获得该网站的内容。但是如果遇到需要登录,或者需要cookie等的网站呢?

查看urllib的源码:

def urlopen(url,data=None,proxies=None):
  """urlopen(url [,data]) -> open file-like object"""
  global _urlopener
  if proxies is not None:
    opener = FancyURLopener(proxies=proxies)
  elif not _urlopener:
    opener = FancyURLopener()
    _urlopener = opener
  else:
    opener = _urlopener
  if data is None:
    return opener.open(url)
  else:
    return opener.open(url,data)

由上面urllib的urlopen的源码,可以看出,还可以传入一个data参数,data参数也应该是一个字典,因为在使用浏览器向服务器发送数据的时候,我们发送的就是字典类型的数据。

还有一点,就是代理支持是 python 2.3 以后加入的。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python urllib urlopen不起作用

Python urllib urlopen不起作用

我只是尝试使用urllib模块从实时网络中获取数据,所以我写了一个简单的示例

这是我的代码:

import urllibsock = urllib.request.urlopen("http://diveintopython.org/") htmlSource = sock.read()                            sock.close()                                        print (htmlSource)

但是我遇到了类似的错误:

Traceback (most recent call last):  File "D:\test.py", line 3, in <module>    sock = urllib.request.urlopen("http://diveintopython.org/") AttributeError: ''module'' object has no attribute ''request''

答案1

小编典典

您正在阅读错误的文档或错误的Python解释器版本。您尝试在Python 2中使用Python 3库。

采用:

import urllib2sock = urllib2.urlopen("http://diveintopython.org/") htmlSource = sock.read()                            sock.close()                                        print htmlSource

Python
2urllib2urllib.request在Python
3中被替换。

python urllib.urlopen 为什么要加 http://

python urllib.urlopen 为什么要加 http://

urllib.open(http://www.google.com) 底层一定是调用了 socket ()

打开一个 socket 的正确方法

s.connect(("www.google.com",80))

访问远程的服务器,得具备两个元素 IP 地址  端口号

IP 地址就是 www.google.com 已经被 DNS 解析了

端口号 哪里来那?

import socket
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = socket.getservbyname("http",''tcp'')
print port

port 就是 80

所以 s.connect (("www.google.com",port)) 是正确的

当写 http://www.google.com 时,会正确调用 port = socket.getservbyname ("http",''tcp''),获取使用的协议和端口号

so...................., 你懂的


今天关于python中的Web抓取urlopenpython 网页抓取的介绍到此结束,谢谢您的阅读,有关PHP中的Web抓取、python urllib urlopen()对象方法/代理的补充说明、Python urllib urlopen不起作用、python urllib.urlopen 为什么要加 http://等更多相关知识的信息可以在本站进行查询。

本文标签: