干货内容:python网络爬虫学习笔记(4)静态网页抓取(一)知识
优采云 发布时间: 2022-09-21 18:07干货内容:python网络爬虫学习笔记(4)静态网页抓取(一)知识
1 信息 2 笔记 静态网页抓取(一)知识
静态网页是纯HTML格式的网页,使用AJAX动态加载网页的数据不一定会出现在HTML代码中。
对于静态网页,前面使用的Requests库非常有用。这次主要是详细介绍一下。
Requests库使用前期工作(简述),安装介绍在notes(1)中,至于pycharm中使用库之前的工作,notes(3)有一个介绍,简而言之)首先是将库安装到项目中,这里单独粘贴其安装代码:
pip install requests
请求库 - 1 获取响应内容
通常这样使用,返回一个响应响应对象(req是变量名,或者对象名):
req = requests.get(url, 其它参数(可选择))
req.encoding
req.status_code
req.text
……
import requests
key_dict = {'key1': 'value1'}
req = requests.get('http://httpbin.org/get', params=key_dict)
{
"args": {
<p>
"key1": "value1",
"key2": "value2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.22.0"
},
"origin": "223.167.175.166, 223.167.175.166",
"url": "https://httpbin.org/get?key1=value1&key2=value2"
}
</p>
POST 请求
这段原文很清楚,我分段粘贴。
除了GET请求外,有时还需要发送一些以表单形式编码的数据。比如登录时,请求是POST,因为如果使用GET请求,会在URL中显示密码,非常不安全。
如果要实现POST请求,只需将字典传递给Requests中的data参数,请求时数据字典会自动编码为表单。
def data_use():
key_dict = {'key1': 'value1', 'key2': 'value2'}
# 注意是post和data的组合
req = requests.post('http://httpbin.org/post', data=key_dict)
print(req.text)
<p>
</p>
{
"args": {},
"data": "",
"files": {},
"form": {
"key1": "value1",
"key2": "value2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "23",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.22.0"
},
"json": null,
"origin": "223.167.175.166, 223.167.175.166",
"url": "https://httpbin.org/post"
}
入门到精通:java网页爬虫测试源码
StringBuffer 缓冲区=new StringBuffer();
网址 urlObj=null;
URLConnection uc=null;
InputStreamReader in=null;
BufferedReader reader=null;
试试{
//建立网络连接
urlObj=新网址(url);
//打开网络连接
uc=urlObj.openConnection();
//创建网络输入流
in=new InputStreamReader(uc.getInputStream(), encoding);
//缓冲写文件流
reader=new BufferedReader(in);
//临时变量
字符串 tempLine=null;
//循环读取文件流
while((tempLine=reader.readLine())!=null){
//循环追加数据
buffer.append(tempLine+"\n");
}
}catch(异常 e){
e.getStackTrace();
System.out.println("网页抓取失败,连接超时!");
}终于{
如果(在 !=null){
试试{
in.close();
}catch(异常 e){
e.getStackTrace();
}
}
}
返回缓冲区.toString();
}
public static void main(String[] args) {
System.out.println("开始爬取网页源码");
//根据URL和页面的代码集获取网页的源代码
字符串 url="";
字符串编码="utf-8";
String str=getHtmlResourceByURL(url, encoding);
System.out.println(str);
//解析源码
//解析需要下载的内容部分
}
}