爬虫开发
基础概念我们已经讲完,怎么来开发个爬虫呢?举个栗子:
如图,是星斗苍凉、月色照亮的动漫斗罗大陆的播放页面。我们以此为例,开发爬虫来获取页面数据。
Java爬虫
Java爬虫的开发主要使用Jsoup。
引入Jsoup依赖:
org.jsoup
jsoup
1.11.2
程序开发:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
public class JavaCrawler {
public static void main(String[] args) throws IOException {
String url = "https://v.qq.com/detail/m/m441e3rjq9kwpsc.html";
// 发起请求,获取页面
Document document = Jsoup.connect(url).get();
// 解析html,获取数据
Element body = document.body();
Element common = body.getElementsByClass("video_title_cn").get(0);
String name = common.getElementsByAttribute("_stat").text();
String category = common.getElementsByClass("type").text();
Elements type_txt = body.getElementsByClass("type_txt");
String alias = type_txt.get(0).text();
String area = type_txt.get(1).text();
String parts = type_txt.get(2).text();
String date = type_txt.get(3).text();
String update = type_txt.get(4).text();
String tag = body.getElementsByClass("tag").text();
String describe = body.getElementsByClass("_desc_txt_lineHight").text();
System.out.println(name + "\n" + category + "\n" + alias + "\n" + area + "\n" + parts + "\n" + date + "\n" + update + "\n" + tag + "\n" + describe);
}
}
Python爬虫
对于Python爬虫的开发,使用的是requests和bs4。
安装模块:
pip install requests bs4
程序开发:
import requests
from bs4 import BeautifulSoup
url = 'https://v.qq.com/detail/m/m441e3rjq9kwpsc.html'
# 发起请求,获取页面
response = requests.get(url)
# 解析html,获取数据
soup = BeautifulSoup(response.text, 'html.parser')
name = soup.select(".video_title_cn a")[0].string
category = soup.select("span.type")[0].string
alias = soup.select("span.type_txt")[0].string
area = soup.select("span.type_txt")[1].string
parts =soup.select("span.type_txt")[2].string
date = soup.select("span.type_txt")[3].string
update = soup.select("span.type_txt")[4].string
tag = soup.select("a.tag")[0].string
describe = soup.select("span._desc_txt_lineHight")[0].string
print(name, category, alias, parts, date, update, tag, describe, sep='\n')
上面两个程序输出相同的结果:
至此,斗罗大陆的爬虫开发工作就完成了。从代码也能看出来,请求部分也就一行,大部分都是解析部分的,这里使用css选择器来完成数据的解析。
我们再来看看请求部分获取的网页内容:
当然,一个完整的爬虫程序除了以上模块,还需要有存储模块,必要的时候还需要代理池模块。其次,对于整个大型网站数据的爬取还需要对网站进行深度/广度遍历来完成,还需要考虑到如果爬虫中断,如何从断点开始继续爬取等方面的设计。这一部分的内容后面会写。