我正在尝试使用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) 我想知道在某个站点B中使用应用程序(例如Google App Engine)从某个站点A消耗一些字节(精确地来自386个)的最合乎道德的方式是什么,但是做得对,没有抓到的意图,我实际上只需要检查公共服务的状态,他们目前没有提供任何API.因此,站点A中的标记具有一个JavaScript数组,其中包含我需要的信息,并且能够访问,即每五分钟一次就足够了.
任何建议将不胜感激.
更新:
首先,非常感谢您的反馈.站点A基本上是目前运行我们的公共地铁网络公司的网站,所以我打算开发一个微小的免费Android应用程序,任何人都不仅与整个网络地图和站,但对还更新信息服务的可用性(以及那些我将最终消耗的字节),等等.
需要scrapy如何从一个页面获取链接然后按照此链接,从链接页面获取更多信息,并与第一页的一些数据合并...
谢谢
我正在使用Python中的Selenium webdriver抓取一个网页
我正在处理的网页上有一个表格.我可以填写表单,然后单击"提交"按钮.
它会生成一个弹出窗口(Javascript Alert).我不确定,如何通过webdriver点击弹出窗口.
知道怎么做吗?
谢谢
我正在尝试使用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不会停止执行阻止或保持其他部分不被执行.
这样做的正确方法是什么?
我正在尝试使用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) 我正在尝试用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.
我正在使用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) 我是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)
我要找的输出是位置名称和链接.我一无所获.我哪里错了?
我试图通过以下代码从特定网站异步获取HTML代码:
var response = await httpClient.GetStringAsync("url");
Run Code Online (Sandbox Code Playgroud)
但问题是网站通常需要一秒钟来加载其他部分.我需要的是,所以问题是我是否可以先加载网站并在一定时间后阅读内容.
对不起,如果这个问题已经得到解答,但我真的不知道该搜索什么.
谢谢,二十
如果您想自己尝试URL http://iloveradio.de/iloveradio/,我需要不立即加载的标题和艺术家.
web-scraping ×10
python ×5
scrapy ×3
html ×2
javascript ×2
alert ×1
c# ×1
haskell ×1
html-parsing ×1
monads ×1
phantomjs ×1
regex ×1
selenium ×1
web-crawler ×1
webdriver ×1