2024-04-08 00:34:25 | 我爱编程网
用HTTPclient或者htmlunit工具包,他们都可以做爬虫获取网页的工具。比如htmlunit,楼主可以这样获取网页源码:
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.WebClientOptions;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlBody;
import java.util.List;
public class helloHtmlUnit{
public static void main(String[] args) throws Exception{
String str;
//创建一个webclient
WebClient webClient = new WebClient();
//htmlunit 对css和javascript的支持不好,所以请关闭之
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(false);
//获取页面
HtmlPage page = webClient.getPage("");
//获取页面的TITLE
str = page.getTitleText();
System.out.println(str);
//获取页面的XML代码
str = page.asXml();
System.out.println(str);
//获取页面的文本
str = page.asText();
System.out.println(str);
//关闭webclient
webClient.closeAllWindows();
}
}
如果用HTTPclient,楼主可以百度它的教程,有本书叫做《自己动手写网络爬虫》,里面是以java语言为基础讲的,作为一个爬虫入门者可以去看看
1、思路:
明确需要爬取的信息
分析网页结构
分析爬取流程
优化
2、明确需要爬取的信息
职位名称
工资
职位描述
公司名称
公司主页
详情网页
分析网页结构
3、目标网站-拉勾网
网站使用json作为交互数据,分析json数据,需要的json关键数据
查看需要的信息所在的位置,使用Jsoup来解析网页
4、分析爬取流程我爱编程网
1.获取所有的positionId生成详情页,存放在一个存放网址列表中List
2.获取每个详情页并解析为Job类,得到一个存放Job类的列表List
3.把List
Java操作Excel需要用到jxl
5、关键代码实现
public List
String pre_url="
";
String end_url=".html";
String url;
if (gj.equals("")){
url="
;city=
"+city+"&needAddtionalResult=false&first=false&pn="+pn+"&kd="+kd;
}else {
url="
positionAjax.json?gj="+gj+"&px=default&city="+city+"&needAddtionalResult=false&first=false&pn="+pn+"&kd="+kd;
}
String rs=getJson(url);
System.out.println(rs);
int total= JsonPath.read(rs,"$.content.positionResult.totalCount");//获取总数
int pagesize=total/15;
if (pagesize>=30){
pagesize=30;
}
System.out.println(total);
// System.out.println(rs);
List
for (int j=1;j<=pagesize;j++){ //获取所有的网页id
pn++; //更新页数
url="
positionAjax.json?gj="+gj+"&px=default&city="+city+"&needAddtionalResult=false&first=false&pn="+pn+"&kd="+kd;
String rs2=getJson(url);
List
posid.addAll(posid2); //添加解析的id到第一个list
}
List
//生成网页列表
for (int id:posid){
String url3=pre_url+id+end_url;
joburls.add(url3);
}
return joburls;
}
public Job getJob(String url){ //获取工作信息
Job job=new Job();
Document document= null;
document = Jsoup.parse(getJson(url));
job.setJobname(document.select(".name").text());
job.setSalary(document.select(".salary").text());
String joball=HtmlTool.tag(document.select(".job_bt").select("div").html());//清除html标签
job.setJobdesc(joball);//职位描述包含要求
job.setCompany(document.select(".b2").attr("alt"));
Elements elements=document.select(".c_feature");
//System.out.println(document.select(".name").text());
job.setCompanysite(elements.select("a").attr("href")); //获取公司主页
job.setJobdsite(url);
return job;
}
void insertExcel(List
int row=1;
Workbook wb = Workbook.getWorkbook(new File(JobCondition.filename));
WritableWorkbook book = Workbook.createWorkbook(new File(JobCondition.filename), wb);
WritableSheet sheet=book.getSheet(0);
for (int i=0;i
sheet.addCell(new Label(0,row,jobList.get(i).getJobname()));
sheet.addCell(new Label(1,row,jobList.get(i).getSalary()));
sheet.addCell(new Label(2,row,jobList.get(i).getJobdesc()));
sheet.addCell(new Label(3,row,jobList.get(i).getCompany()));
sheet.addCell(new Label(4,row,jobList.get(i).getCompanysite()));
sheet.addCell(new Label(5,row,jobList.get(i).getJobdsite()));
row++;
}
book.write();
book.close();
}
方法很多,我说一种方法吧。
你可以用HttpClient来获取网页的源码,然后在源码中分别查找每一个链接。
下面这一段代码就可以获取网页的的源码 strURL为网页链接
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(500);
client.getHttpConnectionManager().getParams().setSoTimeout(500);
method = new PostMethod(strURL);
client.executeMethod(method);
webStatus += method.getStatusLine().getStatusCode()+",";
if(! "200".equals(method.getStatusLine().getStatusCode()+"")){
if(! "".equals(method.getStatusLine().getStatusCode()+""))
return "";
}
InputStream is = method.getResponseBodyAsStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, currEncoding));
StringBuffer stringBuffer = new StringBuffer();
String str = "";
while ((str = br.readLine()) != null) {
stringBuffer.append(str);
}
content = stringBuffer.toString();
我不知道你还有什么具体的问题,有的继续追问。
如何使用爬虫获取网页数据python八爪鱼采集器是一款功能全面、操作简单、适用范围广泛的互联网数据采集器,但是它是一款可视化的工具,不需要编程和代码知识。如果您想使用Python编写爬虫来获取网页数据,可以使用Python的第三方库,如BeautifulSoup、Scrapy等。以下是使用Python编写爬虫获取网页数据的一般步骤:1.安装Python和所需的第三方库。可以使用pip命令来安
python爬虫要学什么python爬虫要学什么?让我们一起了解一下吧!1、学习计算机网络协议基础,了解一个完整的网络请求过程,大致了解网络协议(http协议,tcp-ip协议),了解socket编程,为后期学习爬虫打下扎实的基础。2、学习前端基础,你需要掌握html、css和JavaScript之间的关系,浏览器的加载过程,ajax、json和xml,GET、POST方法。3、
Python爬虫如何写?Python的爬虫库其实很多,像常见的urllib,requests,bs4,lxml等,初始入门爬虫的话,可以学习一下requests和bs4(BeautifulSoup)这2个库,比较简单,也易学习,requests用于请求页面,BeautifulSoup用于解析页面,下面我以这2个库为基础,简单介绍一下Python如何爬取网页静态数据和网页动态数据,实验环境w
网络安全学什么编程语言网络安全学会学习C和C++、Python,编程语言。1、C和C++如果是在网络安全领域,C和C++是相对重要的最基础的编程语言,这些语言提供了对底层IT基础设施(如RAM和系统进程)的访问,如果保护不好,黑客可以很容易地利用这些基础设施。C编程语言是大多数操作系统的主干。从本质上讲,C++通常被认为是C的大哥,它是由crack、meth和ster
python神经网络编程有什么用?预测器神经网络和计算机一样,对于输入和输出都做了一些处理,当我们不知道这些是什么具体处理的时候,可以使用模型来估计,模型中最重要的就是其中的参数。对于以前所学的知识都是求出特定的参数,而在这里是使用误差值的大小去多次指导参数的调整,这就是迭代。误差值=真实值-计算值分类器预测器是转换输入和输出之间的关系,分类器是将两类事物划分开,只是预测
Java程序在eclipse中怎么运行?中文版:1、打开“运行”菜单,点击“运行(N)...”按钮,进入运行配置界面。2、在左侧选择要运行的程序,然后点击右侧“(x)=自变量”标签,在下面的“程序自变量(A):”文本框中输入程序运行需要的参数。3、点击下面的“运行(R)”按钮运行程序。英文版:1、打开“Run”菜单,点击“Run...”按钮,进入运行配置界面。
java怎么让程序一直运行只有死循环和线程两种方法,不太明白楼主是什么意思。如果是web工程的话,可以发布到服务器上(如tomcat)等,一直让服务器处于开启状态就行了。如果是类似做QQ一样的即时聊天工具的话就用线程,让工具类处在线程内,再用类的构造函数开启线程,.start()就是这样了。JAVA程序执行完一个功能后如何继续执行其他功能加个for循环,加个判断退出的条件。。。
查看java进程java进程linuxlinux命令里的jps是什么意思?jps(JavaVirtualMachineProcessStatusTool)是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。Java工程师需要掌握Linux的哪些方面?基本操作,会部署程序,查看进
2024-03-02 02:58:47
2024-01-01 09:58:48
2024-03-21 00:22:13
2024-01-26 10:37:53
2024-03-31 15:14:06
2024-03-04 07:43:42