Re: [问题] 关于网页抓取内容

楼主: Neisseria (Neisseria)   2014-09-02 00:29:30
※ 引述《jenocool ()》之铭言:
: 但发现如果标签内有其他的标签,似乎会自动换行?
: 例如原本标题:台北潮肉寿喜烧肉@*~洪小玥~*-iPeen 爱评网
: 而在Html中则是
: 台北
: <b>潮肉</b>
: 寿喜烧肉@*~洪小玥~*-iPeen 爱评网
: 所以抓出来的结果就变成
: 台北
: 潮肉
: 寿喜烧肉@*~洪小玥~*-iPeen 爱评网
: 不知道要用什么方法将他们合并?
提供其中一种方法,但是,是用 Perl 的 Mojo::UserAgent 来解决
当然也可以试着用 Python 的模组来解决,自行参考看看
想法是用程式来做原本手动做的 HTTP 的动作,在这里用 POST
然后将 DOM 树抓出想要的部分,剩一点点 HTML tag 就用 regex 直接无脑删除
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new();
my $tx = $ua->post('http://tw.search.yahoo.com/search'
=> form => {p => 'linux'});
binmode STDOUT, ":utf8";
# $res stands for http response
if (my $res = $tx->success) {
# get the elements with css selector
$res->dom('h3 > a')->each(sub {
my ($e, $count) = @_;
$e =~ s{<[^>]+?>}{}g;
print "$e\n";});
}
: 另外想请问一下,抓取GOOGLE搜寻结果似乎会有问题
: 上网查了一下似乎是有防止抓取
: 不知道有没有什么方法可以解决?
Google search 不允许 POST 或是 OPTIONS,只能用 GET
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new();
my $tx = $ua->get('http://www.google.com.tw/search'
=> form => {q => 'linux'});
if (my $res = $tx->success) {
# modify the steps here to fit your need
print $res->text, "\n";
}
试了一下 Python 的相关模组,像是 urllib2 或是 httplib2
但是试不出来,都会被 Google 认定是违规的动作,不太敢再一直试
我比较没有用 Python 写抓网页的 script 的经验,可能要另请高明
: 看了一整天还是一头雾水 ..
: 谢谢大家了
虽然不是 Python 程式码,但是多多少少参考看看

Links booklink

Contact Us: admin [ a t ] ucptt.com