标签: web-scraping

如何处理IncompleteRead:在python中

我想从网站上获取一些数据.然而,它回报了我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)

请帮帮我.谢谢

python mechanize beautifulsoup web-scraping python-2.7

27
推荐指数
3
解决办法
4万
查看次数

使用R从网页中提取链接

下面的两个帖子是从网站提取数据并将其解析为R的不同方法的很好的例子.

使用XML包将html表刮入R数据帧

我如何使用R(Rcurl/XML包?!)来抓取这个网页

我对编程非常陌生,刚开始使用R,所以我希望这个问题非常基本,但考虑到上面的那些帖子,我想是的.

我要做的就是提取与给定模式匹配的链接.我觉得我可以使用RCurl来读取网页并使用字符串表达式提取它们的暴力方法.也就是说,如果网页形成得相当好,我将如何使用XML包进行此操作.

随着我了解更多,我喜欢在查看问题时"查看"数据.问题是这些方法中的一些生成了列表列表等列表,因此新的(像我)这样的人很难走到我需要去的地方.

同样,我对所有编程都是新手,所以任何帮助或代码片段都将不胜感激.

r web-scraping

26
推荐指数
2
解决办法
3万
查看次数

从Google Analytics中搜集实时访问者

我有很多网站,并希望在一个页面上构建一个显示每个网站上实时访问者数量的信息中心.(还有其他人想要这个吗?)现在查看此信息的唯一方法是为每个站点打开一个新选项卡.

谷歌没有实时API,所以我想知道是否有可能刮掉这些数据.Eduardo Cereto发现Google通过实时/绑定网络请求传输实时数据.任何更精明的人都知道我应该如何开始?这就是我的想法:

  1. 弄清楚如何以编程方式进行身份验证
  2. 检查所有实时/绑定请求以查看它们如何更改.每个请求都有唯一的密钥吗?它来自哪里?以下是我对请求的细分:

    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时

  3. 检查所有实时/绑定响应,看看它们是如何变化的.数据是如何进入的?它看起来像是一些改变的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

26
推荐指数
4
解决办法
2万
查看次数

如何执行未经验证的Instagram网页抓取以响应最近的私有API更改?

几个月前,Instagram开始通过删除大多数功能并拒绝接受大多数权限范围的新应用程序来使其公共API无法运行.本周进行了进一步的修改,进一步限制了开发商的选择.

我们中的许多人已转向使用Instagram的私有Web API来实现我们以前的功能.一个突出的ping/instagram_private_api设法重建大部分先前的功能,但是,随着本周公开宣布的更改,Instagram也对其私有API进行了基础更改,需要魔术变量,用户代理和MD5哈希来进行网络抓取请求可能.这可以通过跟踪先前链接的git存储库上的最新版本来看到,并且可以在此处看到继续获取数据所需的确切更改.

这些变化包括:

  • 在请求之间保留用户代理和CSRF令牌.
  • 发出初始请求以从响应正文中https://instagram.com/获取rhx_gis魔术密钥.
  • 设置X-Instagram-GIS标头,它是通过rhx_gis在传递MD5哈希之前神奇地连接键和查询变量而形成的.

任何小于此值都会导致403错误.这些更改已在上述存储库中成功实现,但是,我在JS中的尝试仍然失败.在下面的代码中,我试图从用户时间轴中获取前9个帖子.确定这个的查询参数是:

  • query_hash42323d64886122307be10013ad2dcc44(取从用户的时间轴媒体).
  • 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)

javascript web-scraping instagram instagram-api

26
推荐指数
1
解决办法
1万
查看次数

在Android中抓取HTML网页的最快方法是什么?

我需要从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)

我应该用吗?

  • 模式匹配?
  • 使用BufferedReader提取信息?

或者有更快的方式来获取这些信息?

html android web-scraping

25
推荐指数
2
解决办法
5万
查看次数

Python遵循重定向然后下载页面?

我有以下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)

html python web-scraping

25
推荐指数
2
解决办法
5万
查看次数

Python - 从谷歌图像搜索下载图像?

我想使用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)

python web-scraping

25
推荐指数
4
解决办法
7万
查看次数

如何修复 yaml 文件中的“此上下文中不允许映射值”错误?

我浏览过类似的问题,并相信我已经应用了我能够从答案中收集到的所有内容。

我有一个 .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)

yaml web-scraping

25
推荐指数
4
解决办法
8万
查看次数

如何在抓取过程中动态生成start_urls?

我正在抓取一个网站,该网站可能包含很多start_urls,例如http://www.a.com/list_1_2_3.htm.

我想填充[list_\d + \ d +\d + .htm]之类的start_urls ,并在抓取过程中从[node_\d + .htm]等网址中提取项目.

我可以使用CrawlSpider来实现这个功能吗?如何在爬行中动态生成start_urls?

非常感谢!

web-crawler scrapy web-scraping

24
推荐指数
2
解决办法
2万
查看次数

CasperJS/PhantomJS无法加载https页面

我知道有一些网页PhantomJS/CasperJS无法打开,我想知道这个是否是其中之一:https://maizepages.umich.edu .CasperJS给出错误:PhantomJS无法打开页面状态=失败.

我尝试忽略-ssl-errors并更改我的用户代理但我不确定如何确定使用哪些.

我现在正在做的就是基本的casper设置在casper.start(url, function () { ... })哪里url=https://maizepages.umich.edu;

javascript ssl web-scraping phantomjs casperjs

24
推荐指数
1
解决办法
2万
查看次数