抓取网页数据(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 中有一个萤火虫。如果有人教你,几天。我遇到了一个人,教了她一个星期,但没能把它做好。自己想办法有点困难。可能需要一周左右的时间。