爬虫入门(爬取目标网站的一些数据)

java爬虫入门(简单粗暴拿到目标网站的一些数据)
pppppps:不要再疑惑我为啥不用python爬虫,我我我我我我这就去学🤨。

这篇文章的目标是学会分析一个目标网站的基本信息结构,并将目标网站的所需数据得到

拿Tencent云的网站来举例,哦对了,建议用Chorm浏览器。
在这里插入图片描述
通常我们是拿上面的url去访问网页的,页面上有一些数据,那么这个网页上的数据在哪呢

  1. 在页面右击鼠标,点击检查,会出现下图的右边侧栏,在这里可以看到网站的一些信息。
  • Elements可以查看网站的html代码,前面那个带鼠标的小箭头点击可以移动到左边的具体样式,比如一个具体的按钮,右边会将显示对应的html部分。
  • Console控制台,可以看一些打印信息,也可以自己输入打印一些信息。
  • Source可以看到一些js文件。
  • Network可以看到所有网络包数据。

在这里插入图片描述

  1. 我们主要是要看Network,选择xhr可以看到前后端交互的数据包,主要是在这些里面找到你想要的数据。

在这里插入图片描述

3. 比如说关于地区的信息,我们在列表中依次打开查看,其实url名字会有一些提示,可以再看具体的Response,就是服务器给我们的响应内容,如果里面有你想要的东西,那么恭喜你已经完成第一步了——找到目标!

在这里插入图片描述

  1. 我们先用Postman模拟登录请求,可以先用来看下需要哪些信息可以访问成功,模拟成功之后再去写代码,简单节省时间,没有的网上搜下下一个,很方便的~
    进来后点击new->Request,输入请求名字,备注和存储的文件夹,点击save建立成功

在这里插入图片描述
在这里插入图片描述

  1. 下面圈住的五部分是我们可能要用的部分。
    第一个选择get/post请求,这个时候就去看你的网络包的Headers里的信息,看下是Post还是Get方式。
  • 如果是GET方式的话,一般获取非常简单,只要选定GET,再在后面输入网络包里看到的Request URL,点击Send就可以成功访问,得到响应数据(强调,是我们上面在Network找到的网络包)。

  • Post会需要携带表单,稍微麻烦一些。第一行选定POST,输入目标url。
    第二行的Params是一些参数,输入key和value会跟在url后面(这里不需要)
    Headers是需要填写一些post的请求头信息,比如cookie(一般都需要),还有Request Headers里的一些其他信息,这个就需要自己试一下到底需要哪几个值。
    Body是需要填写携带的数据,在Headers里最下面的Request Payload里。

扩展参考阅读:GET和POST两种基本请求方法的区别
在这里插入图片描述
在这里插入图片描述在这里粘贴表单数据
在这里插入图片描述

  1. 成功访问,看到结果,恭喜你完成第二步——确定目标可以访问及如何访问!

在这里插入图片描述

  1. 最后一步——将上述过程变成代码实现!
    ps:Maven记得引依赖,普通工程记得引包。
//目标url
String url="https://iaas.cloud.tencent.com/cgi/capi?i=cvm/DescribeInstanceConfigInfos";
//携带的表单数据
String jsonData="{\"serviceType\":\"cvm\",\"regionId\":1,\"action\":\"DescribeInstanceConfigInfos\",\"data\":{\"Version\":\"2017-03-12\"}}";

HttpClient client=new DefaultHttpClient();
HttpPost post=new HttpPost(url); //定义post请求

//设置请求的Headers信息
post.setHeader("content-type","application/json; charset=UTF-8");
post.setHeader("cookie", "pgv_pvi=2988804096; _ga=GA1.2.219681563.1573613938; qcloud_uid=a1ddbd47dab030fbabb5436b8dfad257; language=zh; _gcl_au=1.1.710214189.1573613942; pgv_pvid=5803553824; ts_uid=1485816228; projectName=%E5%85%A8%E9%83%A8%E9%A1%B9%E7%9B%AE; qcloud_from=gwzcw.2212127.2212127.2212127-1574153001716; qcmainCSRFToken=S1exi9j_2S; qcloud_visitId=b5f1aa7b7dcf1ca0aff0914d5cb7e322; pgv_si=s7979086848; lusername=13278887558%40163.com; intl=1; pgv_info=ssid=s9775566591; qcact.sid=s%3Asi39Y0luO_I1hvsFFw96gIZIQc6C6qre.j%2Bfi1pjDdFPtSuCN8l9ZvxQLJkxY0gMQfOhGWYdoM9Q; lastLoginType=wx; uin=o100012023360; tinyid=144115215019052908; _gat=1; skey=-71FUcLjf5RJyBRQN*fb6p3f4QhzzjQxsFzEiPEfe1g_; nick=100012023360; qb.sid=qcbase_session1574660241401-2E6VZsbMbGL1ao8dEc1jl0V5KWGT5cT1; qb.sid.sig=vOTlmQ270LOo5ejvCuJNsig3Bvk");
post.setHeader("x-csrfcode", "223685902");

//携带表单数据
StringEntity s=new StringEntity(jsonData, "utf-8");
s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "appliction/json"));
post.setEntity(s);
        
//拿到Response,读取成String字符串
HttpResponse httpResponse=client.execute(post);
InputStream in=httpResponse.getEntity().getContent();
BufferedReader br=new BufferedReader(new InputStreamReader(in, "utf-8"));
StringBuilder strber=new StringBuilder();
String line=null;
while ((line=br.readLine())!=null) {
   strber.append(line+"\n");
}
in.close();
String result=strber.toString();
if(httpResponse.getStatusLine().getStatusCode()!= HttpStatus.SC_OK){
	result="服务器异常";
}
System.out.println(result);//已经获取访问服务器的数据result

优秀的参考阅读资料:HttpClient详细使用示例

摸索十小时,领悟十分钟,success,分享给黑暗中的同行者,欢迎纠正,欢迎提问~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫是一种可以自动从网页上获数据的程序。以下是使用Python编写简单的爬虫程序来图片的基本过程: 1. 准备工作:导入所需的库,例如requests和re。设置请求头,以模拟浏览器发送请求。创建一个文件夹来存储下载的图片。 2. 发送请求并获响应:使用requests库发送GET请求,传入目标网址和请求头。获响应内容。 3. 解析响应内容:使用正则表达式找到所有图片的URL。正则表达式的模式可以根据具体的网页结构进行调整。 4. 遍历图片URL并下载:使用循环遍历每个图片URL,发送请求并获响应。将响应内容保存到文件中,命名为图片的标题加上图片的后缀。 下面是一个简单的爬虫程序示例: ```python import requests import re import os image_folder = '表情包' # 设置保存图片的文件夹名称 if not os.path.exists(image_folder): os.mkdir(image_folder) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0' } response = requests.get('https://qq.yh31.com/zjbq/', headers=headers) response.encoding = 'utf-8' t = r'<img src="(.*?)" alt="(.*?)" width="160" height="120">' result = re.findall(t, response.text) for img in result: res = requests.get(img[0]) s = img[0].split('.')[-1] with open(image_folder + '/' + img[1] + '.' + s, mode='wb') as file: file.write(res.content) ``` 请注意,根据不同的网站和页面结构,代码中的正则表达式模式和其他部分可能需要进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值