我想弄清楚是否可以计算HTML element
网站上的区域?像素,百分比或其他.
我的第一个想法是假设元素的宽度和高度为100%,然后尝试通过之间的映射来检索大小HTML and CSS
.
因此,如果引用的CSS文件中有宽度/高度属性,我可能会说占用25%区域的列覆盖了body元素(一切都基于您的屏幕分辨率 - 我仍然试图找出我能够以编程方式完成此操作的方法.
或者我是否应该渲染网站并根据当时最常见的屏幕分辨率的图像进行计算.
还有更多可能的解决方案吗?
(目前我正在尝试在Perl中解决这个问题,但我想任何为此目的而拥有图书馆的语言都会受到赞赏!)
编辑:我需要检索页面上每个元素的可视区域.例如; 如果元素顶部有<body>
元素,可以直观地覆盖它,我想从那里排除那个区域<body>
,依此类推.一个简单的光线跟踪,用于查找页面上每个元素的可见区域.
我之前成功使用过HAP,从网上下载xhtml页面.但是,现在我正在尝试加载和解析xml文档.HAP只会加载位于我的文件系统上的xml文档,例如"C:\ xml\MyXml.xml".它不会从Web(http://www.web.com/doc.xml)加载它.使用Fiddler,我可以看到HAP实际上是通过Web请求xml文档,服务器也使用xml文档进行响应.然而,它停在那里,没有任何解析.HtmlDocument是空的,没有ChildNodes或任何东西.从文件系统加载时,它会成功解析为HtmlDocument.
有任何想法吗?
我想抓一个网站.我已经能够将网站上的内容变成字符串/文件.
现在,我想搜索具有以下内容的特定行:
<li><span class="abc">Key 1:</span> <span class="aom_pb">Value 1</span></li>
Run Code Online (Sandbox Code Playgroud)
保证只有一个关键1:在网站上,我需要获得价值1.这是最好的方法.如果它通过正则表达式,你能帮我看看它应该是什么样子.我还没有使用过Regex.
此致,AMM
对于一个类项目,我们应该从另一个网站提取数据.我从GiantBomb.com选择了类似于给定游戏的游戏(在我的剧本中给予他们学分)
// $gameLink = "/call-of-duty-black-ops/61-26423/";
$html = file_get_contents("http://www.giantbomb.com" . urlencode($gameLink) . "games_similar/");
echo $html;
Run Code Online (Sandbox Code Playgroud)
这什么都不返回.
但是,如果$ gameLink是手动输入的:
$html = file_get_contents("http://www.giantbomb.com/call-of-duty-black-ops/61-26423/games_similar/");
echo $html;
Run Code Online (Sandbox Code Playgroud)
现在,它将正确返回结果.我的代码出了什么问题?我尝试urlencode()
在整个链接上执行,而不仅仅是$ gameLink变量,但它仍然失败.有没有人有什么建议?
我目前正在运行两个不同的scrapy爬虫.
第一个检索有关产品x的信息,第二个检索有关第一个机器人刮取的URL上的产品x的其他信息.
我的管道将每个产品的信息连接成多个文本文件,其中每个产品的信息占用一行数据,并作为不同的文本文件分成多个类别.
每个机器人显然都保持信息完整性,因为所有信息一次解析一个链接(因此每个文本文件的信息与其他文本文件逐行对齐).但是,据我所知,scrapy使用动态爬网机制,根据加载时间对网站进行爬网,而不是在start_url列表中进行排序.因此,我的第二个爬虫的信息与第一个爬虫的其他文本文件不对齐.
一个简单的解决方法是刮掉两个机器人找到的信息的"主键"(mysql fanboys)变体,从而可以通过按字母顺序排序主键并因此对齐数据来帮助在表中对齐产品信息手动.
然而,我目前的项目让我在寻找主键方面处于困境.第二个爬虫爬行具有有限唯一信息的网站,因此我将其结果链接回第一个爬虫的唯一方法是使用第一个爬虫识别的URL并将其链接到第二个爬虫中的相同start_url.
有没有办法将xhtmlselector的每次迭代中被抓取的start_url分配给一个变量,然后可以将其推送到管道中,并在该特定URL上抓取项/字段数据(在源代码中找不到它的情况下) )?
这是我的代码:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from Fleche_Noire.items import FlecheNoireItem
import codecs
class siteSpider(BaseSpider):
name = "bbs"
allowed_domains = ["http://www.samplewebsite.abc"]
start_urls = [
'http://www.samplewebsite.abc/prod1',
'http://www.samplewebsite.abc/prod2',
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
items = []
item = FlecheNoireItem()
item["brand"] = []
item["age"] = []
item["prodcode"] = hxs.select('//h1/text()').extract() or [' ']
item["description1"] = []
item["description2"] = []
item["product"] = []
item["availability"] = []
item["price"] = []
item["URL"] …
Run Code Online (Sandbox Code Playgroud) 我在Python中有一个通过imap库检索的原始字符串。
看起来像这样:
Season: Winter 2017-18
Activity: Basketball - Boys JV
*DATE: 02/13/2018 * - ( previously 02/06/2018 )
Event type: Game
Home/Host: Clear Lake
Opponent: Webster City
*START TIME: 6:15PM CST* - ( previously 4:30PM CST )
Location: Clear Lake High School, 125 N. 20th Street, Clear Lake, IA
Run Code Online (Sandbox Code Playgroud)
刮取每个标签(label为DATE:
)之后的数据的最佳方法是什么?例如,DATE: 02/13/2018 * - ( previously 02/06/2018 )
将其设置为等于,如变量Date
,因此在print(date)
打印时02/13/2018 * - ( previously 02/06/2018 )
将作为输出。
我尝试了以下代码,但每行只打印一个字符。谢谢!
for line in message:
if "DATE:" …
Run Code Online (Sandbox Code Playgroud) 我是iOS开发的新手,我正在尝试编写一个可以抓取网站(HTML)的应用程序.刮刮谷歌只是一个例子 - 我打算抓一些更复杂的东西......
我的代码如下:
#import "KppleViewController.h"
#import "TFHpple.h"
@implementation KppleViewController
@synthesize theButton;
- (IBAction)buttonPressed:(UIButton *)sender {
NSLog(@"button Pressed");
NSURL *url = [NSURL URLWithString: @"http://www.google.com"];
NSData *htmlData = [NSData dataWithContentsOfURL: url];
TFHpple *xpathParse = [[TFHpple alloc] initWithHTMLData:htmlData];
NSArray *elements = [xpathParse searchWithXPathQuery:@"//h3"];
TFHppleElement *element = [elements objectAtIndex:0];
NSString *h3Tag = [element content];
NSLog(@"x",h3Tag);
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试写入控制台(通过NSLog
)以查看是否有效时,我收到错误.我得到的错误是"格式字符串未使用的数据参数"
我在互联网上搜索过,但无济于事.如果我注释掉NSLog以查看我之前的代码是否正确,我会在声明但未被使用的NSlog(h3Tag)上方的变量上收到错误.
任何帮助将不胜感激...
我也对任何其他刮HTML的方法持开放态度......
我试图刮去的最后日期从数据URL链接(该表的第一行)这个页面.但似乎表的内容是由Javascript函数生成的.我尝试使用Nokogiri得到它但是徒劳无益,因为nokogiri无法刮掉Javascript.然后,我试图通过使用以下方式仅使用Nokogiri来获取脚本部分:
url = "http://www.sgx.com/wps/portal/sgxweb/home/marketinfo/historical_data/derivatives/daily_data"
doc = Nokogiri::HTML(open(url))
js = doc.css("script").text
puts js
Run Code Online (Sandbox Code Playgroud)
在输出中,我找到了我想要的类名为sgxTableGrid的表.但问题是Javascript函数中没有关于数据url链接的线索,并且所有内容都是动态生成的.所以,我想知道是否有人知道更好的方法来解决这个问题.
是否可以从网站捕获图表数据?例如,这里的网站有很多情节.是否可以使用Python代码捕获这些数据?
我正在尝试使用从free-proxy-list.net获得的代理刮取一些网站,并使用Golang将其应用到我的本地http请求中,但是当我使用url.Parse()解析代理时,总是返回无效的控制字符URL
func getProxy() *url.URL {
proxyUrl := "https://www.proxy-list.download/api/v1/get?type=http&country=US"
client := &http.Client{}
req, err := http.NewRequest("GET", proxyUrl, nil)
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error proxy ", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error response body", err)
}
details := string(body)
temp := strings.Split(details, "\n")
fmt.Println("http://" + temp[rand.Intn(30)])
checkProxy, err := url.Parse("http://" + temp[rand.Intn(10)])
if err != nil {
fmt.Println("Bad proxy URL", err)
}
return checkProxy
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从“https://www.metabolomicsworkbench.org/data/mb_struct_ajax.php”中抓取表格。
我在网上找到的代码(rvest)不起作用
library(rvest)
url <- "https://www.metabolomicsworkbench.org/data/mb_structure_ajax.php"
A <- url %>%
read_html() %>%
html_nodes(xpath='//*[@id="containerx"]/div[1]/table') %>%
html_table()
Run Code Online (Sandbox Code Playgroud)
A 是“0 的列表”
我应该如何修复此代码或者有更好的方法吗?
提前致谢。