我想从网站上获取一些数据.然而,它回报了我incomplete read.我想要获取的数据是一组庞大的嵌套链接.我在网上进行了一些研究,发现这可能是由于服务器错误(在达到预期大小之前完成了一个分块传输编码).我还在此链接上找到了上面的解决方法
但是,我不确定如何在我的情况下使用它.以下是我正在处理的代码
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;Trident/5.0)')]
urls = "http://shop.o2.co.uk/mobile_phones/Pay_Monthly/smartphone/all_brands"
page = urllib2.urlopen(urls).read()
soup = BeautifulSoup(page)
links = soup.findAll('img',url=True)
for tag in links:
name = tag['alt']
tag['url'] = urlparse.urljoin(urls, tag['url'])
r = br.open(tag['url'])
page_child = br.response().read()
soup_child = BeautifulSoup(page_child)
contracts = [tag_c['value']for tag_c in soup_child.findAll('input', {"name": "tariff-duration"})]
data_usage = [tag_c['value']for tag_c in soup_child.findAll('input', {"name": "allowance"})]
print contracts
print data_usage
Run Code Online (Sandbox Code Playgroud)
请帮帮我.谢谢
下面的两个帖子是从网站提取数据并将其解析为R的不同方法的很好的例子.
我对编程非常陌生,刚开始使用R,所以我希望这个问题非常基本,但考虑到上面的那些帖子,我想是的.
我要做的就是提取与给定模式匹配的链接.我觉得我可以使用RCurl来读取网页并使用字符串表达式提取它们的暴力方法.也就是说,如果网页形成得相当好,我将如何使用XML包进行此操作.
随着我了解更多,我喜欢在查看问题时"查看"数据.问题是这些方法中的一些生成了列表列表等列表,因此新的(像我)这样的人很难走到我需要去的地方.
同样,我对所有编程都是新手,所以任何帮助或代码片段都将不胜感激.
我有很多网站,并希望在一个页面上构建一个显示每个网站上实时访问者数量的信息中心.(还有其他人想要这个吗?)现在查看此信息的唯一方法是为每个站点打开一个新选项卡.
谷歌没有实时API,所以我想知道是否有可能刮掉这些数据.Eduardo Cereto发现Google通过实时/绑定网络请求传输实时数据.任何更精明的人都知道我应该如何开始?这就是我的想法:
检查所有实时/绑定请求以查看它们如何更改.每个请求都有唯一的密钥吗?它来自哪里?以下是我对请求的细分:
https://www.google.com/analytics/realtime/bind?VER=8
&key = [这是什么?它从何而来?21个字符小写字母数字,每个请求保持相同]
&ds = [这是什么?它从何而来?21个字符小写字母数字,每个请求保持相同]
&PAGEID = RT-标准%2Frt-概述
&Q = T%3A0%7C%3A1%3A0%3A%2CT%3A11%7C%3A1%3A5%3A%2Cot%3A0%3A0%3A4%2Cot%3A0%3A0%3A3%2CT%3A7%7C%3A1% 3A10%3A6%3D%3DREFERRAL%3B%2CT%3A10%7C%3A1%3A10%3A%2CT%3A18%7C%3A1%3A10%3A%2CT%3A4%7C5%7C2%7C%3A1%3A10%3A2! %3Dzz%3B%2C&F
q变量URI解码为this(是什么?):t:0 |:1:0:,t:11 |:1:5:,ot:0:0:4,ot:0:0:3,t :7 |:1:10:6 ==转诊;,T:10 |:1:10:,T:18 |:1:10:,T:4 | 5 | 2 |:1:10:2 = ZZ;,&F
&RID = RPC
&SID = [这是什么?它从何而来?16个字符的大写字母数字,每个请求都保持相同]
&CI = 0
&AID = [这是什么?它从何而来?整数,从1开始,奇怪地增加到150然后298]
&TYPE = XMLHTTP
&zx = [这是什么?它从何而来?12个字符的小写字母数字,更改每个请求]
&t = 1时
检查所有实时/绑定响应,看看它们是如何变化的.数据是如何进入的?它看起来像是一些改变的JSON.我需要多少次连接才能获取数据?那里的活跃访客在哪里?这是一个样本数据转储:
19 [[151,["noop"]]] 388 [[152,["rt",[{"ot:0:0:4":{"timeUnit":"MINUTES","overTimeData":[{"值":[49,53,52,40,42,55,49,41,51,52,47,42,62,82,76,71,81,66,81,86,71,66,65, 65,55,51,53,73,71,81], "姓名": "合计"}]}, "OT:0:0:3":{ "TIMEUNIT": "秒", "overTimeData":[ { "值":[0,1,1,1,1,0,1,0,1,1,1,0,2,0,2,2,1,0,0,0,0,0, 2,1,1,2,1,2,0,5,1,0,2,1,1,1,2,0,2,1,0,5,1,1,2,0,0, 0,0,0,0,0,0,0,1,1,0,3,2,0],"名称":"总计"}]}}]]]] 388 [[153,["rt ",[{ "OT:0:0:4":{ …
ajax screen-scraping google-analytics google-analytics-api web-scraping
几个月前,Instagram开始通过删除大多数功能并拒绝接受大多数权限范围的新应用程序来使其公共API无法运行.本周进行了进一步的修改,进一步限制了开发商的选择.
我们中的许多人已转向使用Instagram的私有Web API来实现我们以前的功能.一个突出的ping/instagram_private_api设法重建大部分先前的功能,但是,随着本周公开宣布的更改,Instagram也对其私有API进行了基础更改,需要魔术变量,用户代理和MD5哈希来进行网络抓取请求可能.这可以通过跟踪先前链接的git存储库上的最新版本来看到,并且可以在此处看到继续获取数据所需的确切更改.
这些变化包括:
https://instagram.com/获取rhx_gis魔术密钥.X-Instagram-GIS标头,它是通过rhx_gis在传递MD5哈希之前神奇地连接键和查询变量而形成的.任何小于此值都会导致403错误.这些更改已在上述存储库中成功实现,但是,我在JS中的尝试仍然失败.在下面的代码中,我试图从用户时间轴中获取前9个帖子.确定这个的查询参数是:
query_hash的42323d64886122307be10013ad2dcc44(取从用户的时间轴媒体).variables.id 任何用户ID作为字符串(从中获取媒体的用户).variables.first,要获取的帖子数,作为整数.以前,https://www.instagram.com/graphql/query/?query_hash=42323d64886122307be10013ad2dcc44&variables=%7B%22id%22%3A%225380311726%22%2C%22first%22%3A1%7D由于URL不受保护,因此可以通过简单地从GET中获取此请求而无需任何上述更改.
但是,我尝试实现在上述存储库中成功编写的功能不起作用,我只收到来自Instagram的403个回复.我在节点环境中使用superagent作为我的请求库.
/*
** Retrieve an arbitrary cookie value by a given key.
*/
const getCookieValueFromKey = function(key, cookies) {
const cookie = cookies.find(c => c.indexOf(key) !== -1);
if (!cookie) {
throw new Error('No key found.');
}
return (RegExp(key + '=(.*?);', 'g').exec(cookie))[1];
};
/* …Run Code Online (Sandbox Code Playgroud) 我需要从Android中的非结构化网页中提取信息.我想要的信息嵌入在没有id的表中.
<table>
<tr><td>Description</td><td></td><td>I want this field next to the description cell</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我应该用吗?
或者有更快的方式来获取这些信息?
我有以下python脚本,它工作得很漂亮.
import urllib2
url = 'http://abc.com' # write the url here
usock = urllib2.urlopen(url)
data = usock.read()
usock.close()
print data
Run Code Online (Sandbox Code Playgroud)
但是,我给它的一些URL可能会重定向它2次或更多次.在加载数据之前,如何让python等待重定向完成.例如,使用上面的代码时
http://www.google.com/search?hl=en&q=KEYWORD&btnI=1
Run Code Online (Sandbox Code Playgroud)
这是在谷歌搜索上点击我的幸运按钮的等价物,我得到:
>>> url = 'http://www.google.com/search?hl=en&q=KEYWORD&btnI=1'
>>> usick = urllib2.urlopen(url)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error …Run Code Online (Sandbox Code Playgroud) 我想使用python下载所有谷歌图像搜索图像.我使用的代码似乎有些问题.我的代码是
import os
import sys
import time
from urllib import FancyURLopener
import urllib2
import simplejson
# Define search term
searchTerm = "parrot"
# Replace spaces ' ' in search term for '%20' in order to comply with request
searchTerm = searchTerm.replace(' ','%20')
# Start FancyURLopener with defined version
class MyOpener(FancyURLopener):
version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
myopener = MyOpener()
# Set count to 0
count= 0
for i in range(0,10):
# Notice that the …Run Code Online (Sandbox Code Playgroud) 我浏览过类似的问题,并相信我已经应用了我能够从答案中收集到的所有内容。
我有一个 .yml 文件,据我所知,每个元素的格式都相同。然而根据YamlLint.com
(<unknown>): mapping values are not allowed in this context at line 119 column 16
在这种情况下,第 119 行是包含第二个实例的行,下面的单词“transitions”。我可以告诉每个元素的格式相同。我在这里错过了什么吗?
landingPage:
include: false
transitions:
-
condition:location
nextState:location
location:
include:false
transitions:
-
condition:excluded
nextState:excluded
excluded:
include:false
transitions:
-
condition:excluded
nextState: excluded
-
condition:age
nextState:age
Run Code Online (Sandbox Code Playgroud) 我正在抓取一个网站,该网站可能包含很多start_urls,例如http://www.a.com/list_1_2_3.htm.
我想填充[list_\d + \ d +\d + .htm]之类的start_urls ,并在抓取过程中从[node_\d + .htm]等网址中提取项目.
我可以使用CrawlSpider来实现这个功能吗?如何在爬行中动态生成start_urls?
非常感谢!
我知道有一些网页PhantomJS/CasperJS无法打开,我想知道这个是否是其中之一:https://maizepages.umich.edu .CasperJS给出错误:PhantomJS无法打开页面状态=失败.
我尝试忽略-ssl-errors并更改我的用户代理但我不确定如何确定使用哪些.
我现在正在做的就是基本的casper设置在casper.start(url, function () { ... })哪里url=https://maizepages.umich.edu;
web-scraping ×10
python ×3
html ×2
javascript ×2
ajax ×1
android ×1
casperjs ×1
instagram ×1
mechanize ×1
phantomjs ×1
python-2.7 ×1
r ×1
scrapy ×1
ssl ×1
web-crawler ×1
yaml ×1