标签: web-scraping

scrapy-如何停止重定向(302)

我正在尝试使用Scrapy抓取网址.但它将我重定向到不存在的页面.

Redirecting (302) to <GET http://www.shop.inonit.in/mobile/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/1275197> from <GET http://www.shop.inonit.in/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/pid-1275197.aspx>
Run Code Online (Sandbox Code Playgroud)

问题是http://www.shop.inonit.in/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/pid-1275197.aspx存在,但http://www.shop.inonit.in/mobile/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/1275197没有,所以爬虫不能找到这个.我也抓了很多其他网站,但在其他任何地方都没有这个问题.有没有办法可以阻止这种重定向?

任何帮助将非常感激.谢谢.

更新:这是我的蜘蛛类

class Inon_Spider(BaseSpider):
name = 'Inon'
allowed_domains = ['www.shop.inonit.in']

start_urls = ['http://www.shop.inonit.in/Products/Inonit-Gadget-Accessories-Mobile-Covers/-The-Red-Tag/Samsung-Note-2-Dead-Mau/pid-2656465.aspx']

def parse(self, response):

    item = DealspiderItem()
    hxs = HtmlXPathSelector(response)

    title = hxs.select('//div[@class="aboutproduct"]/div[@class="container9"]/div[@class="ctl_aboutbrand"]/h1/text()').extract()
    price = hxs.select('//span[@id="ctl00_ContentPlaceHolder1_Price_ctl00_spnWebPrice"]/span[@class="offer"]/span[@id="ctl00_ContentPlaceHolder1_Price_ctl00_lblOfferPrice"]/text()').extract()
    prc = price[0].replace("Rs.  ","")
    description = []

    item['price'] = prc
    item['title'] = title
    item['description'] = description
    item['url'] = response.url

    return item
Run Code Online (Sandbox Code Playgroud)

web-crawler scrapy web-scraping

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

从没有提供API的网站消费内容的最合乎道德的方式是什么?

我想知道在某个站点B中使用应用程序(例如Google App Engine)从某个站点A消耗一些字节(精确地来自386个)的最合乎道德的方式是什么,但是做得对,没有抓到的意图,我实际上只需要检查公共服务的状态,他们目前没有提供任何API.因此,站点A中的标记具有一个JavaScript数组,其中包含我需要的信息,并且能够访问,即每五分钟一次就足够了.

任何建议将不胜感激.

更新:

首先,非常感谢您的反馈.站点A基本上是目前运行我们的公共地铁网络公司的网站,所以我打算开发一个微小的免费Android应用程序,任何人都不仅与整个网络地图和站,但对还更新信息服务的可用性(以及那些我将最终消耗的字节),等等.

javascript google-app-engine web-scraping

17
推荐指数
1
解决办法
456
查看次数

如何将目标页面的结果合并到scrapy中的当前页面?

需要scrapy如何从一个页面获取链接然后按照此链接,从链接页面获取更多信息,并与第一页的一些数据合并...

谢谢

python scrapy web-scraping

17
推荐指数
3
解决办法
8520
查看次数

单击通过webdriver的javascript弹出窗口

我正在使用Python中的Selenium webdriver抓取一个网页

我正在处理的网页上有一个表格.我可以填写表单,然后单击"提交"按钮.

它会生成一个弹出窗口(Javascript Alert).我不确定,如何通过webdriver点击弹出窗口.

知道怎么做吗?

谢谢

python selenium alert webdriver web-scraping

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

我如何提早做回块?

我正在尝试使用Haskell来搜索网页并将结果编译成一个对象.

如果由于某种原因,我无法从页面中获取所有项目,我想停止尝试处理页面并提前返回.

例如:

scrapePage :: String -> IO ()
scrapePage url = do
  doc <- fromUrl url
  title <- liftM headMay $ runX $ doc >>> css "head.title" >>> getText
  when (isNothing title) (return ())
  date <- liftM headMay $ runX $ doc >>> css "span.dateTime" ! "data-utc"
  when (isNothing date) (return ())
  -- etc
  -- make page object and send it to db
  return ()
Run Code Online (Sandbox Code Playgroud)

问题是when不会停止执行阻止或保持其他部分不被执行.

这样做的正确方法是什么?

monads haskell web-scraping

17
推荐指数
2
解决办法
2432
查看次数

从CLI或Web调用时挂起PhantomJS

我正在尝试使用phantomJS来捕获URL的屏幕截图,但是当我调用phantomJS(来自命令行或web应用程序)时,它会挂起并且看不到执行"exit()"调用.我似乎无法找到任何错误消息,它一直运行,直到我杀了它.这是传递给phantomjs命令的JS文件:

var page = require('webpage').create();
var system = require('system');
var script_address = '';
var page_to_load = '';
var members_id = '';
var activities_id = '';
var folder_path = '';

if (system.args.length < 5) 
{
    console.log('Usage: phantom_activity_fax.js script_address page_to_load members_id activities_id folder_path');
    console.log('#Args: '+system.args.length);
    phantom.exit();
}//END IF SYSTEM.ARGS.LENGTH === 1

//ASSIGN OUR ARGUMENTS RECIEVED
script_address = system.args[0];
page_to_load = system.args[1];
members_id = system.args[2];
activities_id = system.args[3];
folder_path = system.args[4];

console.log(system.args[0]);
console.log(system.args[1]);
console.log(system.args[2]);
console.log(system.args[3]);
console.log(system.args[4]);

//OPEN OUR PAGE WITH THE VALUES PROVIDED …
Run Code Online (Sandbox Code Playgroud)

javascript web-scraping phantomjs

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

Python BeautifulSoup刮表

我正在尝试用BeautifulSoup创建一个表刮.我写了这个Python代码:

import urllib2
from bs4 import BeautifulSoup

url = "http://dofollow.netsons.org/table1.htm"  # change to whatever your url is

page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page)

for i in soup.find_all('form'):
    print i.attrs['class']
Run Code Online (Sandbox Code Playgroud)

我需要刮Nome,Cognome,Email.

html python beautifulsoup html-parsing web-scraping

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

BeautifulSoup webscraping find_all():找到完全匹配

我正在使用Python和BeautifulSoup进行网页抓取.

让我说我有以下HTML代码来刮:

<body>
    <div class="product">Product 1</div>
    <div class="product">Product 2</div>
    <div class="product special">Product 3</div>
    <div class="product special">Product 4</div>
</body>
Run Code Online (Sandbox Code Playgroud)

使用BeautifulSoup,我想找到属性class ="product"(仅限产品1和2)的产品,而不是'特殊'产品

如果我执行以下操作:

result = soup.find_all('div', {'class': 'product'})
Run Code Online (Sandbox Code Playgroud)

结果包括所有产品(1,2,3和4).

如何找到类别与"产品"完全匹配的产品?


我运行的代码:

from bs4 import BeautifulSoup
import re

text = """
<body>
    <div class="product">Product 1</div>
    <div class="product">Product 2</div>
    <div class="product special">Product 3</div>
    <div class="product special">Product 4</div>
</body>"""

soup = BeautifulSoup(text)
result = soup.findAll(attrs={'class': re.compile(r"^product$")})
print result
Run Code Online (Sandbox Code Playgroud)

输出:

[<div class="product">Product 1</div>, <div class="product">Product 2</div>, <div class="product special">Product 3</div>, <div class="product special">Product 4</div>]
Run Code Online (Sandbox Code Playgroud)

html python regex beautifulsoup web-scraping

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

Scrapy:提取链接和文本

我是scrapy的新手,我正试图抓住宜家网站的网页.基本页面,其中包含此处给出的位置列表.

我的items.py文件如下:

import scrapy


class IkeaItem(scrapy.Item):

    name = scrapy.Field()
    link = scrapy.Field()
Run Code Online (Sandbox Code Playgroud)

蜘蛛给出如下:

import  scrapy
from ikea.items import IkeaItem
class IkeaSpider(scrapy.Spider):
    name = 'ikea'

    allowed_domains = ['http://www.ikea.com/']

    start_urls = ['http://www.ikea.com/']

    def parse(self, response):
        for sel in response.xpath('//tr/td/a'):
            item = IkeaItem()
            item['name'] = sel.xpath('a/text()').extract()
            item['link'] = sel.xpath('a/@href').extract()

            yield item
Run Code Online (Sandbox Code Playgroud)

在运行文件时,我没有得到任何输出.json文件输出类似于:

[[{"link": [], "name": []}
Run Code Online (Sandbox Code Playgroud)

我要找的输出是位置名称和链接.我一无所获.我哪里错了?

python scrapy web-scraping scrapy-spider

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

完成加载后从网站上获取HTML代码

我试图通过以下代码从特定网站异步获取HTML代码:

var response = await httpClient.GetStringAsync("url");
Run Code Online (Sandbox Code Playgroud)

但问题是网站通常需要一秒钟来加载其他部分.我需要的是,所以问题是我是否可以先加载网站并在一定时间后阅读内容.

对不起,如果这个问题已经得到解答,但我真的不知道该搜索什么.

谢谢,二十


编辑#1

如果您想自己尝试URL http://iloveradio.de/iloveradio/,我需要不立即加载的标题和艺术家.

c# web-scraping dotnet-httpclient

17
推荐指数
1
解决办法
1314
查看次数