如何解析/抓取/爬取网站以获取特定信息?
最近我接到了一个让我感到很震惊的任务。我的俱乐部想要浏览一些网站,找出那些和我们做同样事情的人。
现在使用的方法是先去维基百科,获取每个城市的列表(比如:阿拉巴马州城市列表),然后访问每个网站(比如:meetup、facebook、craigslist等),接着在每个城市的每个网站上搜索每个关键词。(比如:功夫、武术等)
这样算下来就是460个城市乘以5个网站乘以5个关键词,总共要进行11500次不同的搜索,真是让人感到无聊得要命。
我真的希望能有更简单的方法。在寻找答案的过程中,我发现了这个网站(构建一个网络爬虫),我在想这可能是个解决办法。
我的问题是:我能否修改这个网站上的某个网络爬虫(或者其他地方的爬虫),让它进行这样的搜索,并只返回那些符合关键词的结果?我不在乎用什么语言,比如bash脚本、python、ruby等。
如果有哪里不清楚,请告诉我,抱歉如果我说得有点啰嗦。
1 个回答
1
我不会为了这么简单的事情去做一个真正的网络爬虫。我觉得可以这样做:
- 先把城市的列表放在一个文件里,比如叫
cities.txt
(可以手动做,也可以想办法自动生成) - 弄清楚你想要的网站是用什么样的URL格式来搜索的。
- 写一个脚本,自动进行所有的搜索,并把结果保存下来。
- 在你的电脑上分析这些数据 (比如找出每个内容提供者的结果对应的 XPath,然后用这些去搜索)
获取数据的部分用 wget
应该很简单:
for city in `cat cities.txt`; do
for keyword in 'kung-fu' 'martial arts'; do
wget http://searchsite1.com/?search=${keyword}&city=${city}
wget http://searchsite2.com/groups/search?q=${keyword}+${city}
done
done
其他的部分就需要你自己动动脑筋了。这是我会这么做的,你可以根据自己的情况调整。