import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.ysccc.tools.Emptys;
public class DataBugger {
/**
* 信任任何站点,实现https页面的正常访问
*
*/
public static void trustEveryone() {
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[] { new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
} }, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
} catch (Exception e) {
// e.printStackTrace();
}
}
public static void main(String[] args) throws IOException, InterruptedException {
trustEveryone();
Map<String, String> conn = new LinkedHashMap<>();
conn.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
conn.put("Accept-Encoding", "gzip, deflate, br");
conn.put("Accept-Language", "zh-CN,zh;q=0.9");
conn.put("Cache-Control", "max-age=0");
conn.put("Connection", "keep-alive");
conn.put("Host", "blog.maxleap.cn");
conn.put("Upgrade-Insecure-Requests", "1");
conn.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36");
StringBuilder buf = new StringBuilder();
for (int i = 0; i < 16; i++) {
System.out.println("当前页码" + i);
Thread.sleep(1000);
Document doc = Jsoup.connect("https://waimao.mingluji.com/%E5%9B%9B%E5%B7%9D?page=" + i).headers(conn).get();
Elements spans = doc.select("div.view-content span.field-content a");
for (Element span : spans) {
buf.append("https://waimao.mingluji.com").append(span.attr("href")).append("\r\n");
}
FileUtils.write(new File("d:\\address.txt"), buf.toString(), Charset.forName("utf-8"));
}
List<String> lines = FileUtils.readLines(new File("d:\\address.txt"), Charset.forName("utf-8"));
StringBuilder sbuf = new StringBuilder();
int i = 0;
int size = lines.size();
for (String url : lines) {
System.out.println("当前企业:" + (i++) + ",企业总数:" + size);
Thread.sleep(1000);
if (Emptys.isNotEmpty(url) && StringUtils.contains(url, "https://")) {
Document doc = Jsoup.connect(url).headers(conn).get();
Elements spans = doc.select("div.content fieldset span.field-item span");
for (Element span : spans) {
sbuf.append(span.text()).append("\t");
}
sbuf.append("\r\n");
}
}
FileUtils.write(new File("d:\\merchant.txt"), sbuf.toString(), Charset.forName("utf-8"));
}
}
转载于:https://my.oschina.net/u/1261213/blog/2243441
分享到:
相关推荐
在"SpringBoot+jsoup爬虫"项目中,我们首先需要创建一个本地的`.xlsx`文件,这是一种常见的电子表格格式,用于存储结构化数据。文件中通常包含商品的URL列表,这些都是我们需要爬取的目标页面。 以下是实现这个项目...
总之,"基于jsoup的SpringBoot爬虫demo"是一个集成了网页抓取和数据存储的实践项目,通过学习和研究这个项目,开发者可以更好地理解如何利用jsoup解析HTML,以及如何在SpringBoot环境下构建高效的数据抓取应用。
jsoup广泛应用于数据分析、内容抓取、网站自动化测试等领域。例如,新闻聚合应用可能会使用jsoup抓取多个网站的新闻标题,社交媒体分析工具可能利用它提取用户评论,而开发者则可能用它来测试网页的HTML结构是否符合...
"jsoup爬取某宝购物车数据返回json串,放入eclipse即可运行" 这个标题揭示了本次项目的核心技术是使用jsoup这个Java库来抓取淘宝网站上的购物车数据,并将获取到的数据转换为JSON格式。JSON(JavaScript Object ...
Jsoup在实际开发中的应用广泛,如网页抓取、信息提取、自动化测试,甚至是构建简单的爬虫。它的易用性和灵活性使得它成为Java开发者处理HTML数据的首选工具之一。通过熟练掌握Jsoup,开发者可以高效地处理网络上的...
- **自动化测试**:在测试Web应用时,可以使用Jsoup验证HTML渲染的正确性。 - **内容过滤**:在用户生成内容的场景下,Jsoup可以帮助过滤掉恶意的HTML标签和属性,保障安全。 总的来说,jsoup1.10.3及其API文档是...
**jsoup:Java爬虫框架详解**...无论你是构建爬虫项目,还是进行Web自动化测试,甚至是进行数据迁移工作,jsoup都能提供强大的支持。通过学习和掌握jsoup,开发者可以更高效地处理HTML,从而提升项目的开发效率和质量。
4. **网页自动化测试**:测试人员可以利用jsoup检查页面结构是否符合预期,验证元素的存在和状态。 5. **数据分析**:在大数据领域,jsoup可以作为预处理工具,将非结构化的HTML数据转化为结构化数据,便于分析。 ...
- **网页抓取**:JSoup常用于构建简单的网页爬虫,获取网站上的结构化数据,如新闻标题、产品信息等。 - **数据提取与转换**:在数据迁移、聚合或者分析项目中,JSoup可以帮助从HTML页面中提取需要的数据。 - **网站...
- **网站自动化测试**:在自动化测试中,jsoup可以帮助验证页面元素的正确显示和交互行为。 - **内容管理**:在内容管理系统中,jsoup可以用来清洗和标准化用户输入的HTML,防止XSS攻击。 总之,jsoup是一个强大的...
在实际开发中,**使用场景**包括但不限于:构建爬虫抓取网站信息、从网页中提取结构化数据(如新闻标题、评论等)、网页自动化测试(模拟用户操作,如点击按钮、填写表单)、以及HTML内容的生成和修改(如生成动态...
4. **Web自动化测试**:在测试框架中,jsoup可以用于验证页面结构和元素状态。 总的来说,jsoup是一款强大且易于使用的Java HTML解析库,它简化了HTML处理的复杂性,为开发者提供了高效、安全的工具来处理网页数据...
**JSoup:Java的网页抓取与解析库** JSoup是一个用Java编写的开源库,专为处理HTML文档而设计。它提供了丰富的API,使得开发者能够...无论你是进行数据分析、爬虫开发还是自动化测试,JSoup都是一个值得信赖的伙伴。
在实际应用中,jsoup广泛用于网页爬虫、信息提取、数据清洗、自动化测试等多个领域。比如,你可以用它来抓取网站上的新闻标题、用户评论,或者从电商网站提取商品信息。此外,它也可以与Spring、Hibernate等其他Java...
在提供的测试样例中,你可以看到如何使用这些功能的实际代码示例,这将帮助你快速上手并理解其工作原理。 例如,以下是一个简单的iTextpdf代码片段,用于创建一个新的PDF文档并添加文本: ```java Document ...
JSoup常用于Web抓取、数据分析、爬虫开发、自动化测试等领域,它的易用性和灵活性使得它成为Java开发者处理HTML时的首选工具。 总的来说,“jsoup-1.8.3.zip”文件是一个完整的JSoup包,包含了运行、学习和理解这个...
jsoup能够解析HTML文档,清洁不规范的HTML,并可以从中提取结构化数据。这个开源项目在2010年进行了重大更新,带来了最新的解析功能和API,使得开发者能更高效地处理网页内容。 **源码分析** 在提供的压缩包中,`...
在IT行业中,这种技术广泛应用于Web抓取、数据挖掘和自动化测试等领域。以下将详细介绍这两个库以及如何结合它们来实现所需功能。 首先,**vParser**是一个Java编写的轻量级HTML解析器,它的设计目标是简化HTML和...