我不确定哪种语言最适合(或者如果已经有了这个程序),但这是我基本上想做的事情:当给出一个URL时,我希望它转到那个页面,在两者之间捕获文本某些html标签(每页只有一次),然后单击“下一步”按钮并移至下一页(并重复直到完成)。然后将整个事物导出为.pdf或类似的东西(.txt甚至可以工作)。 如果程序可以在每个帖子之间打印水平规则,但不是必需的
我只需要这个工作一次,事实上,这里是我要复制帖子的博客:http://www.trailjournals.com/entry.cfm?id=336394(我基本上只是不想花点时间点击所有这些)。
我知道一些JavaScript,一些基本的正则表达式,以及一些HTML以及其他几个在这里不适用的(我是一个快速学习者),所以我在这里学习,而不仅仅是要求某人为我做点什么。
谢谢!
答案 0 :(得分:0)
可能有更好的方法,但由于我是一名工科学生(而Matlab目前是我最擅长的编程语言),我决定看看能否通过那里完成。它起作用了。
当然,有些事情可能会做得更好(我真的不太了解正则表达式,所以我使用了很多“findstr”)。
clear;
clc;
fid=fopen('journals.txt','w');
fprintf(fid,'');
fclose('all');
fid=fopen('journals.txt','a');
id=input('Enter the starting id number: ','s');
loop=1;
while loop==1
clc;
url=strcat('http://www.trailjournals.com/entry.cfm?id=',id)
strContents=urlread(url);
f=findstr('</TABLE>',strContents);
f=f(1)+13;
l=findstr('<p>',strContents);
l=l(end)-5;
if f>l(end)
f=findstr('<blockquote>',strContents);
f=f(1)+14;
end
p=strContents(1,f:l)
if isempty(p)==1
cprintf('red','EMPTY ENTRY!\n');
return;
end
% disp(p);
% disp('------------');
% ques=input('Does this look good? (y/n): ','s');
% disp('------------');
%
% while ques=='n'
% firstword=input('Enter the first word: ','s');
% lastword=input('Enter the last word: ','s');
% f=findstr(firstword,strContents);
% l=findstr(lastword,strContents);
% p=strContents(1,f:l+length(lastword));
% disp(p);
% disp('------------');
% ques=input('Does this look good? (y/n): ','s');
% disp('------------');
% end
fprintf(fid,p);
fprintf(fid,'\n');
fprintf(fid,'\r\n\r\n-------------------------------------------\r\n\r\n');
%Next URL: next:next+6
next=findstr('">Next</a>',strContents);
if isempty(next)==1
break;
end
next=next(1);
next=next-6;
id=strContents(1,next:next+5);
url=strcat('http://www.trailjournals.com/entry.cfm?id=',id);
end
fclose('all');
cprintf('Green','The process has been completed\n');