抓取网页数据(Python3:用Python3.检测不到正确的编码,解决思路)

优采云 发布时间: 2022-04-15 08:06

  抓取网页数据(Python3:用Python3.检测不到正确的编码,解决思路)

  您好,首先,sys.setdefaultencoding 是邪恶的。

  其次,不使用 Requests 就不要去看文档,不要乱来。

  如果 Requests 无法检测到正确的编码,那么你告诉它什么是正确的:

  response.encoding = 'gbk'

  打印响应.文本

  原创内容在response.content、bytes中,你可以随意处理。

  绝对不需要为单个请求使用 Session。直接做 requests.get(xxx) 。

  最后,如果您不知道如何处理错误编码的字符串,或者使用 Python 3.x,而不是 Shotgun 编程,请考虑一下。

  以下是 Python 3。Python 2 也是如此,它在该字符串前面加上 au 以告诉它它是 unicode。

  解决方案:

  有一个简单的思路,可以动态解析页面信息。urllib 无法解析动态信息,但浏览器可以。浏览器上显示的处理后的信息实际上是处理后的 HTML 文本。

  文件。这为我们抓取动态页面信息提供了一个好思路。Python中有一个著名的图形库——PyQt。虽然 PyQt 是一个图形库,但它有

  QtWebkit。这是非常实用的。Google 的 Chrome 和 Apple 的 Safari 都是基于 WebKit 内核开发的,所以我们可以通过 PyQt 获取 QtWebKit

  读取页面中的信息并将其加载到 HTML 文档中,然后解析 HTML 文档,从 HTML 文档中提取我们想要使用的信息。

  所需材料:

  作者自己使用的是 Mac OS X。同样的方法应该也适用于 Windows 和 Linux 平台。

  1、Qt4 库

  图书馆,而不是造物主。库在Mac的默认安装路径下,应该是/home/username/Developor/,不要更改Qt4的默认安装路径。否则,安装可能会失败。

  官方网站:

  2、SIP,PyQt4

  这两个软件都可以在 PyQt 的官网上找到。下载是它的源代码。Mac 和 Linux 需要自己编译。

  下载地址为:

  在终端中切换到提取文件的目录。

  在终端输入

  蟒蛇配置.py

  制作

  须藤使安装

  编译安装。

  SIP和PyQt4的安装方法是一样的。但是 PyQt4 依赖于 SIP。所以先安装SIP再安装PyQt4

  1、2 两步完成后,Python PyQt4 模块就安装好了。在 Python shell 中键入 import PyQt4 以查看是否可以找到 PyQt4 模块。

  3、斯宾纳

  spynner 是一个 QtWebKit 客户端,它模拟浏览器来加载页面、引发事件和填写表单。

  这个模块可以在 Python 的官方网站上找到。

  下载链接:

  解压后cd到安装目录,然后输入sudo python configure.py install安装模块。

  这样,Spynner 模块就安装好了。在 python shell 中尝试 import spynner 以查看模块是否已安装。

  Spynner 的简单使用

  Spynner的功能很强大,但是由于我的能力有限,先介绍一下如何展示网页的源代码。

  #!/usr/bin/python

  #-*-编码:utf-8 -*-

  *敏*感*词*斯皮纳

  浏览器 = spynner.Browser()

  #创建浏览器对象

  browser.hide()

  #打开浏览器并隐藏它。

  browser.load("")

  #browser 类中有一个类方法load,可以使用webkit 来加载你要加载的页面信息。

  #load(是要加载的 URL 的字符串形式)

  打印 browser.html.encode("utf-8")

  #browser 类的一个成员是 html,它是页面处理后的源代码字符串。

  #转码为UTF-8编码

  open("Test.html", 'w+').write(browser.html.encode("utf-8"))

  #也可以写入文件,用浏览器打开。

  浏览器.close()

  #关闭浏览器

  通过这个程序,可以比较容易的显示出webkit处理的页面的HTML源代码。

  斯宾纳应用程序

  下面介绍一下spynner的简单应用。通过一个简单的程序,你就可以得到你在浏览器中看到的页面的所有图片。HTMLParser 文档解析可以用 HTMLParser、BeautifulSoup 等完成,我选择 HTMParser。

  #!/usr/bin/python

  *敏*感*词*斯皮纳

  导入 HTMLParser

  导入操作系统

  导入 urllib

  MyParser 类(HTMLParser.HTMLParser):

  def handle_starttag(self, tag, attrs):

  如果标签 == 'img':

  url = dict(attrs)['src']

  name = os.path.basename(dict(attrs)['src'])

  如果 name.endswith('.jpg') 或 name.endswith('.png') 或 name.endswith('gif'):

  打印“下载.....”,名称

  urllib.urlretrieve(网址,名称)

  如果 __name__ == "__main__":

  浏览器 = spynner.Browser()

  浏览器.show()

  browser.load("")

  解析器 = MyParser()

  Parser.feed(browser.html)

  打印“完成”

  浏览器.close()

  通过这个程序,您可以下载您在页面上看到的所有图片。几行简单的程序就可以完成这项艰巨的任务。实现了图像的批处理。这确实是Python语言的优势,然后把繁重的任务交给第三方。

  Python如何爬取动态数据实现方法——:你的意思是爬取动态渲染生成的页面,类似于微博的下拉刷新?如果是这样,分析ajax请求找到它,通常是xhr。其实也是考虑使用 selinum 模块(希望我没有拼错模块名)

  如何使用Python爬取动态加载的网页数据-:动态网页抓取是一种典型的方法1.直接查看动态网页的加载规则。如果是ajax,找出对python的ajax请求。如果是 js 去处后生成的 URL。有必要阅读JS并了解规则。然后让python生成URL。这是常用的方法2. 方法二,用python调用webkit内核、IE内核、或者有firefox内核的浏览器。然后保存浏览结果。您通常可以使用浏览器测试框架。他们内置了这些功能 3. 方法3,通过http代理,抓取内容并组装起来。您甚至可以嵌入自己的 js 脚本进行挂钩。这种方法常用于系统的逆向工程软件中

  python3如何爬取动态加载的网页信息-:方法一在页面中找到xhr请求,获取实际请求参数。直接获取相关搜索的请求返回码,然后进行数据排序。方法二模拟浏览器操作,比如使用 Selenium 模块。

  python如何抓取动态页面内容?- :1.首先了解网页爬取的逻辑流程,请参考:【整理】关于爬取网页,分析网页内容,模拟登陆逻辑/流程网站注意事项2.复用工具来分析需要的内容是如何生成的【总结】浏览器中的开发者工具(IE9的F12和Chrome的Ctrl+Shift+I)——网页分析的工具,随便用火狐的firebug也可以用过,不过我用过,感觉不如IE9的F12好用。3. 已经分析,找出是哪个url生成了你需要的数据,然后用python实现相应的代码。

  如何使用python抓取网页中隐藏的div内容?:你说的隐藏的div内容应该是动态加载的数据,在网页源码中是不显示的,只有在网页加载的时候才请求显示数据,一般来说,这种数据是存储在一个json文件,只要抓到json文件的url地址解析,然后...

  如何使用Python抓取动态页面信息-:很久以前,在学习Python网页编程的时候,涉及到一个Python urllib。您可以使用 urllib.urlopen("url").read() 轻松读取页面信息上的静态信息。但是随着时代的发展,越来越多的网页使用javascript、jQuery、PHP等语言来动态生成页面...

  python如何抓取动态加载的网页数据,比如我的工作网络企业链接(需要在底部加载更多才能显示) - : content=urllib.urlopen(url).read() for x in ['LabelWageDes ', 'LabelWorkDes','LabelEnterpriseDesc']: 模式 = pile(r'(.*?)

  ') for value in pattern.findall(content): answer split_values = value.split('

  ') 对于 split_values 中的行:打印行

  如何使用python爬取js动态生成内容的页面——:python 2.6 + selenium-2.53.6 + firefox45.0 + BeautifulSoup3.@ > 2.1 或 python 2.6 + selenium-2.53.6 + phantomjs 2.1.1

  如何使用Python爬取动态页面信息——:Python爬取动态页面和静态页面基本相同。不同的是,一些动态页面对请求头有限制(如cookie\user agent)或ip限制。如果要抓取APP的动态页面没有这些限制,可以使用和静态页面一样的方法,例如: import urllib2 url = "xxxxxx" print urllib2.urlopen( url).read()

  Python爬取动态生成的网页需要具备什么知识或用途——:需要有web编程基础,懂一些简单的ajax,需要一个网页抓取调试工具。Mozilla 中有一个萤火虫。如果有人教你,几天。我遇到了一个人,教了她一个星期,但没能把它做好。自己想办法有点困难。可能需要一周左右的时间。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线