爬虫(wuwuwu我要死了
1.概述
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
- 从一个URL,文件或字符串中解析HTML;
- 使用DOM或CSS选择器来查找、取出数据;
- 可操作HTML元素、属性、文本;
jsoup 中文api(里面有如何使用jsoup的方法)
https://www.open-open.com/jsoup/
2.选取要抓取的地址
1.要抓取的地址
(例如 https://blog.csdn.net/weixin_43568342 这是我的博客
2.创建一个类 里面创建你要抓取的内容
举个栗子 简单的抓取一个名字
public class BlogAuthor {
//作者名字
private String authorName;
}
3.你如果想要抓取特定的东西可以f12看网页上你需要的东西的特征,比如他是一个a标签,他的class是什么之类的
3.添加依赖
(我是在springboot的框架下写的,有pom.xml,其他框架下的pom.xml也可以,没有自己创建一个吧
1.在pom.xml中添加
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
<!--爬虫-->
2.在刚才创建的BlogAuthor类中添加一个方法
public static BlogAuthor getBlogAutoMessage() {
Document doc;
//创建一个document上面添加的(import记得用这个)import org.jsoup.nodes.Document;
BlogAuthor blogAuthor = null;
List<Element> elements;
//创建一个element序列上面添加的(import记得用这个)import org.jsoup.nodes.Element;
//作者名字
String uthorName;
// 访问数量
blogAuthor = new BlogAuthor();
try {
doc = Jsoup.connect("http://blog.csdn.net/dt235201314")
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")
//"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"
//"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
.timeout(5000).get();
if (doc != null) {
elements = doc.select("a");//提取所有a标签下的内容
if(elements.size()!=0)//如果有东西提取出来
uthorName=elements.get(0).text();
else uthorName="nihao";//否则他的内容就是nihao
blogAuthor.setAuthorName(uthorName);
}
} catch (Exception e) {
e.printStackTrace();
}
return blogAuthor;//这个方法返回一个BlogAuthor
}
3.2.1
特地说一下,userAgent这个是用户代理,你的最好自己找,怎么找呢?
明白???
4.写一个测试类
import com.example.test.pojo.BlogAuthor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/bad")
public class Test{
@RequestMapping("/hello")
@ResponseBody
public static void test(){
BlogAuthor blogAuthor = BlogAuthor.getBlogAutoMessage();//执行刚写的方法
System.out.println("==-->"+blogAuthor.getAuthorName());//输出刚刚得到的名字,记得写set和get方法
}
}
运行方法,如果不是框架下的话直接把这个作为主函数
然后运行控制台会输出名字
那么就到这里,
告辞。