Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python:有可能刮一个非常特别的网页吗?

Python:有可能刮一个非常特别的网页吗?
EN

Stack Overflow用户
提问于 2018-01-18 02:12:25
回答 2查看 106关注 0票数 2

我想从这个网站自动保存城市的数据:

http://www.dataforcities.org/

我使用beautifulsoup库从网页中获取数据。

http://open.dataforcities.org/details?4[]=2016

代码语言:javascript
运行
AI代码解释
复制
import urllib2
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://open.dataforcities.org/details?4[]=2016').read())

如果我遵循用Python进行Web抓取中的示例,就会得到以下错误:

代码语言:javascript
运行
AI代码解释
复制
soup = BeautifulSoup(urllib2.urlopen('http://example.com').read())

for row in soup('table', {'class': 'metrics'})[0].tbody('tr'):
    tds = row('td')
    print tds[0].string, tds[1].string

IndexError                                Traceback (most recent call last)
<ipython-input-71-d688ff354182> in <module>()
----> 1 for row in soup('table', {'class': 'metrics'})[0].tbody('tr'):
      2     tds = row('td')
      3     print tds[0].string, tds[1].string

IndexError: list index out of range

  [1]: http://www.dataforcities.org/
  [2]: http://open.dataforcities.org/
  [3]: https://i.stack.imgur.com/qfQyG.png
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-18 02:22:25

通过快速查看站点,这个站点的一个很好的技术就是查看页面上JS提出的请求。它将显示用于收集页面上填充的数据的内部API。

例如,对于特定的城市,会向http://open.dataforcities.org/city/109/themes/2017发出GET请求,该请求包含包含多个条目的JSON响应。您可以使用requests自己获得这个

代码语言:javascript
运行
AI代码解释
复制
>>> import requests
>>> response = requests.get('http://open.dataforcities.org/city/109/themes/2017')
>>> response.json()
[{'theme': 'Economy', 'score': 108, 'date': '2015', 'rank': '2/9'}, {'theme': 'Education', 'score': 97, 'date': '2015', 'rank': '8/9'}, {'theme': 'Energy', 'score': 110, 'date': '2015', 'rank': '1/9'}, 

因此,只需做一点点工作,您就可以发现获取所需数据所需的所有端点。这只是一个方法。您还可以使用浏览器自动化工具(如selenium ) --不仅用于自动滚动和单击浏览器操作,还可以执行任意JavaScript并检查js中的数据。

代码语言:javascript
运行
AI代码解释
复制
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://example.com/page/to/scrape')
value = driver.execute_script('return someThing.value;')

但是,在尝试抓取站点时遇到很多麻烦之前,您应该始终检查它们是否有您可以使用的有文档的公共API。

票数 2
EN

Stack Overflow用户

发布于 2018-01-18 02:21:52

您可以使用Python、Beautifulsoup库从网站上抓取数据,帮助清理html代码和提取。它们也是其他图书馆。甚至NodeJs也可以这样做。

主要是你的逻辑。Python和Beautifulsoup将为您提供数据。你必须分析并保存在数据库中。

漂亮的汤文件

其他请求,lxml,Selenium,Scrapy

示例

代码语言:javascript
运行
AI代码解释
复制
from bs4 import BeautifulSoup
import requests

page = requests.get("http://www.dataforcities.org/")
soup = BeautifulSoup(page.content, 'html.parser')


all_links = soup.find_all(("a")

就像上面一样你能找到任何东西。有许多功能。教程web抓取教程

巨蟒与美汤

最好也检查一下官方文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48318730

复制
相关文章
DreamweaverCS6安装时出错的解决教程
目前,CS6 是 Adobe dreamweaver 的最新版本,增强了对 jQuery 、jQuery Mobile 、HTML5 和 CSS3 的支持,优化了FTP功能,及时保存在本地和远程服务器,更有利于团队协作,当然我之前用的是很老的版本,今天同事在安装的时候出现"0xc000007b"错误代码,然后整理里一下解决方案。
李洋博客
2021/06/15
2.9K0
quartus ii运行错误_安装quartus时弹出错误
Info: ******************************************************************* Info: Running Quartus II 64-Bit Analysis & Synthesis Info: Version 11.0 Build 157 04/27/2011 SJ Full Version Info: Processing started: Thu May 15 13:09:59 2014 Info: Command: quartus_map –read_settings_files=on –write_settings_files=off simulate -c simulate Info: Parallel compilation is enabled and will use 2 of the 2 processors detected Info: Found 1 design units, including 1 entities, in source file simulate.v Info: Found entity 1: modelsim_test Error: Top-level design entity “simulate” is undefined
全栈程序员站长
2022/11/04
5.2K0
quartus ii运行错误_安装quartus时弹出错误
zblogasp安装时出错,左侧显示无法使用Access数据库
今天突然想起之前的一个网站博客,感觉还不错,但它是zblogasp的,所以想移植到zblogphp版本,但是把网站数据恢复之后登陆后台显示,数据库连接出错,因为asp+access类型,目录位置都对,所以可能是access数据库连接失败。
李洋博客
2021/06/15
4.8K0
Oracle创建Sequence时Order/NoOrder选项
Oracle创建Sequence时会有Order/NoOrder两个选项,那么到底什么场景用到Order,什么场景又用到NoOrder呢?
程序新视界
2022/11/30
7080
HttpWebRequest 在出错时获取response内容
HttpWebRequest 请求时,服务器会返回500 501这些错误 并包含错误信息,通过如下代码可以拿到错误信息
冰封一夏
2019/09/11
1.3K0
idea配置Tomcat时没有Artifacts选项
Artifacts是maven中的一个概念,表示某个module要如何打包,例如war exploded、war、jar、ear等等这种打包形式;
全栈程序员站长
2022/11/02
1.5K0
idea配置Tomcat时没有Artifacts选项
实战记录—PHP使用curl出错时输出错误信息
踩过的坑,实在不想再踩了,记录记录。 CURL错误列表 curl_exec($ch);//执行curl if (curl_errno($ch)) { echo 'Curl error: ' . curl_error($ch);//出错输出错误 } curl_close($ch);//关闭curl 同理,像正则,Json,数据库这些出错时基本都会有提供有帮助的错误信息 CURL状态码列表 状态码 状态原因 解释 0 正常访问 1 错误的协议 未支持的协议。此版cURL 不支持这一协议。 2 初始
房东的狗丶
2023/02/17
6.3K0
MyBatis集成到Spring时配置MapperScannerConfigurer出错
在web项目中同时集成了spring mvc和mybatis。 将jdbc配置参数独立在外部配置文件中,然后通过<context:property-placeholder>引入。 此时在Spring中注入org.mybatis.spring.mapper.MapperScannerConfigurer,如下所示:
编程随笔
2019/09/11
2.5K0
WordPress 建立数据库连接时出错
WordPress 网站,需要在一个运行PHP 7.4或更高版本;数据库软件可采用MySQL 5.6或更高版本的服务器中才能运行的。
.T.
2022/02/19
5.4K0
WordPress 建立数据库连接时出错
wordpress建立数据库连接时出错
1、表单信息正确无误 2、安全组配置已更改 3、数据库远程连接已开启 4、数据库在3306端口正常运行并可连接 5、本地无法远程连接数据库
李玺
2022/08/03
3.3K0
wordpress建立数据库连接时出错
Nginx编译安装以及选项
编译安装Nginx 1、安装常见的工具和库(GCC、PCRE、zlib、OpenSSL)
星哥玩云
2022/07/14
9520
导出文件时,responseType设置为'arraybuffer'出错?
由于请求的时候设置了responseType:’arraybuffer’,返回的是数据流,要取得json信息需要进行转换:
用户2323866
2021/06/23
2.7K0
安装python扩展包pylint出错
用VSCode作为python的IDE,VSCode会提示安装pylint。pylint是python代码风格控制插件,如果你写的代码不符合常见风格,就会报错。使用pip安装pylint时往往会报错,如图所示
fem178
2018/07/25
1.6K0
安装python扩展包pylint出错
WiX安装选项--环境变量
系统环境变量由 Windows 定义并应用到所有计算机用户。对系统环境的更改将写入注册表,而且通常需要重启计算机才能生效。通常我们的程序中也会使用环境变量,如何在WiX设置环境变量呢? 安装一个环境变量,我们就需要向Environment table中添加一条记录,其中有几个字段是必须设置的: Environment - public key to be referenced from other tables. Name - name of the environment variable we wan
张善友
2018/01/19
1.4K0
Windows 安装svn(出错已解决)和MySQL安装[通俗易懂]
1.https://tortoisesvn.net/downloads.html网站下载
全栈程序员站长
2022/09/23
1.4K0
Windows 安装svn(出错已解决)和MySQL安装[通俗易懂]
xampp linux_xampp安装出错
xampp是一套很好使用的web服务器组合软件,这里教大家如何在linux安装搭建xampp,希望能帮助到你
全栈程序员站长
2022/11/17
3.4K0
linux下安装mysql-python出错
命令 pip install mysql-python 然后出错了: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-build-YEYPJp/mysql-python/setup.py", line 17, in <module> metadata, options = get_config() File "setup_posix.py", line 43, i
零式的天空
2022/03/22
1.3K0
点击加载更多

相似问题

尝试安装Acumos时出错

118

尝试安装shinyapps时出错

12

尝试安装MSMQ时出错

10

尝试安装cldr时出错

17

尝试安装PyCrypto时出错

141
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档