我正在努力从维基页面获取数据.我正在使用php和jquery执行此操作的组合.首先我使用curl在php抓取页面内容,并呼应的内容.文件名是content.php:
$url = $_GET['url'];
$url = trim($url," ");
$url = urldecode($url);
$url = str_replace(" ","%20",$url);
echo "<a class='urlmax'>".$_GET['title']."</a>";
echo crawl($url);
Run Code Online (Sandbox Code Playgroud)
然后jQuery用于查找匹配的元素.
$.get("content.php",{url:"http://en.wikipedia.org/w/index.php?action=render&title="+str_replace(" ","_",data[x]),title:str_replace(" ","_",data[x])},function(hdata){
var imgs = $(hdata).find('a.image img');
var ent = $(hdata).filter('a.urlmax');
ent = $(ent[0]).text();
});
Run Code Online (Sandbox Code Playgroud)
我能够成功获取图像但是当我使用find而不是filter时,它变量ent,它返回一个空数组.只有过滤器正常工作.为什么是这样?
编辑:我知道查找和过滤器之间的基本区别.这里的两个a.image img和a.urlmax都是hdata.那么为什么发现不起作用a.urlmax.不仅仅是a.urlmax它不适用于任何其他类或id
我试图将图像文件发布到服务器.最初我在家里没有代理测试我的脚本,它工作正常.但是当我在学院使用相同的脚本时,它会抛出一些错误.上传图像的功能如下
function upload($filepath,$dir)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_PROXY, 'localhost:7777');
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'ae07b026:kpack');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, 'http://finalytics.in/sites/scrap/uploader.php' );
$post_array = array(
"my_file"=>"@".$filepath,
"upload"=>"Upload",
"dir"=>$dir
);
print_r($post_array);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_array);
$response = curl_exec($ch);
echo $response;
}
Run Code Online (Sandbox Code Playgroud)
和uploader.php是一个只保存图像的普通文件.
我得到的错误是这样的
ERROR
The requested URL could not be retrieved
While trying to process the request:
POST /sites/scrap/uploader.php HTTP/1.1
Proxy-Authorization: Basic YWUwN2IwMjY6a3BhY2s=
User-Agent: Mozilla/4.0 (compatible;)
Host: finalytics.in
Accept: */*
Proxy-Connection: …Run Code Online (Sandbox Code Playgroud) 我需要获取任何给定 wiki 页面中的第一张图像/主图像。我可以使用抓取工具来做到这一点。但我正在使用curl 来废弃一页。但可能是由于互联网连接速度较慢,仅废弃一个维基页面就需要很长时间。除此之外,我需要根据用户的查询同时显示至少 7-8 个不同的 wiki 图像。
所以使用curl 来实现这一点是没有意义的。我尝试了维基 API
https://en.wikipedia.org/w/api.php?action=query&titles=India&prop=images&imlimit=1
Run Code Online (Sandbox Code Playgroud)
但我无法提供其他参数来对该列表进行排序。通常,此 api 返回的第一张图像不是您在页面顶部看到的主图像。有时图像距离页面上下文太远。
我只需要为每个 wiki 标题显示一张图像。提前致谢。
我想从维基页面获取信息框.为此,我正在使用wiki api.以下是我从中获取json数据的URL.
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles="+ first +"&rvsection = 0
首先是包含维基百科文章标题的变量.
我发现解析这些数据以创建一个有意义的html非常复杂.
我$.each最初是在使用功能.但循环非常深,我不得不使用6-7次来获取我想要的实际数据.我认为会有更好的选择.请帮我.
json数据供参考
jQuery16209061950308827726_1334683337112({"query":{"pages":{"11039790":{"pageid":11039790,"ns":0,"title":"Animal","revisions":[{"*":"{{Redirect|Animalia}}\n{{Other uses}}\n{{pp-semi-protected|small=yes}}\n{{pp-move-indef}}\n{{Taxobox\n| color = {{taxobox color|[[animalia]]}}\n| name = Animals\n| fossil_range = [[Ediacaran]] \u2013 Recent {{fossilrange|610|0|}}\n| image = Animal diversity.png\n| image_width = 250px\n| domain = [[Eukaryota]]\n{{Taxobox_norank_entry | taxon = [[Opisthokonta]]}}\n{{Taxobox_norank_entry | taxon = [[Holozoa]]}}\n{{Taxobox_norank_entry | taxon = [[Filozoa]]}}\n| regnum = '''Animalia'''\n| regnum_authority = [[Carolus Linnaeus|Linnaeus]], [[Systema Naturae|1758]]\n| subdivision_ranks = [[Phylum|Phyla]]\n| subdivision =\n* '''Subkingdom [[Parazoa]]'''\n** [[Sponge|Porifera]]\n** [[Placozoa]]\n* '''Subkingdom [[Eumetazoa]]'''\n** '''[[Radiata]] (unranked)'''\n*** [[Ctenophora]]\n*** [[Cnidaria]]\n** '''[[Bilateria]] (unranked)'''\n*** [[Orthonectida]]\n*** [[Rhombozoa]]\n*** [[Acoelomorpha]]\n*** [[Chaetognatha]]\n*** …Run Code Online (Sandbox Code Playgroud) 我的 python 脚本按顺序解析文件,并进行简单的数据清理并写入新的 csv 文件。我正在使用csv. 该脚本需要很长时间才能运行。
cProfile 输出如下:
在这里发布问题之前,我已经做了很多谷歌搜索。
链接到图片图片链接
在这里添加代码,调用的函数
def db_insert(coCode, bse):
start = time()
q = []
print os.path.join(FILE_PATH, str(bse)+"_clean.csv");
f1 = open(os.path.join(FILE_PATH, str(bse)+"_clean.csv"))
reader = csv.reader(f1)
reader.next()
end = time()
# print end-start
for idx,row in enumerate(reader):
ohlc = {}
date = datetime.strptime( row[0], '%Y-%m-%d')
date = row[0]
row = row[1:6]
(op, high, low, close, volume) = row
ohlc[date] = {}
ohlc[date]['open'] = op
ohlc[date]['high'] = high
ohlc[date]['low'] = low
ohlc[date]['close'] = close …Run Code Online (Sandbox Code Playgroud)