爬虫day1总结
一、虚拟环境
1.python系统环境
安装python就是为了计算机提供运行python程序的环境(这个环境叫做系统环境)
一个python环境中包含python解释器和已经安装过的所有第三方库。
2.虚拟环境
基于系统环境创建的其他的python环境
如果没有虚拟环境只有一个系统环境,那么所有的第三方库就只能放在一起,这样容易突出,而且无法保存同一个第三方库的多个版本。
如果使用虚拟环境就可以让不同类型或者不同相同拥有自己专属的运行环境。
3.新建虚拟环境
1)用pycharm新建虚拟环境
"""
方法一:新建项目的时候,点击 New environment using Virtualenv (一个项目一个虚拟环境)
方法二:打开设置界面 -> Project -> Python Interpreter -> ...
"""
2)用指令新建
import requests
# 1. 爬top250
# headers = {
# 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
# }
# response = requests.get('https://movie.douban.com/top250', headers=headers)
# print(response.text)
# 2. 爬贝壳租房
response = requests.get('https://cd.zu.ke.com/zufang')
print(response.text)
# 3. 爬知乎
# headers = {
# 'cookie': '_zap=b7912ec1-8e24-4d72-81cd-8fa2a2b5f78f; d_c0="AECfz77blxSPTv9pswdcr3xSHE0eCEMj0Dc=|1646568427"; _xsrf=qy8EtuCtpOGgIUmA3g0qSi2edFqOUIBw; __snaker__id=kvuiOSuliPGkosHY; gdxidpyhxdE=cKoceLaHQZDBgVsHWUm4x91aenZN1TJZwcepuPoNLZxY4n5N4o2wHwpYwi2g2Szyjhk62Zk2Ycnn3by1hQMxw2zRUZn%2Batz%2B9WB6%2B9iAJxyAdql7T0n%5Cc6RQhR1Bw0VDt8PXsIgpEwUmGk%2FsTE7TyRdYDAIzf6tRCEb%2BuQMDIgf%5Cvis2%3A1647227434231; _9755xjdesxxd_=32; YD00517437729195%3AWM_NI=VL%2FmRhQNRsih5x7jwAv9CMg1NNBdu9P%2FhVa%2B6vZym7V0SpkuTXEZyk6QnpB2zJidtBCj7UwYxcIEuW4kT2Fs%2FgfPJIkA65d02U7Z4UVZ0X7Ddp0TIofRY2ltngrCqIZcWHk%3D; YD00517437729195%3AWM_NIKE=9ca17ae2e6ffcda170e2e6ee97d266aaaba6a6d47d87b48ab2d84f878a8fabf87bfb9aa185f3618da7fda7c62af0fea7c3b92a9694e18ed16493929e94ec64f7a8f98bf64bb6e78daee63b8e928e85f83394f1a8b7e421f6aa969af03d96f09d91ea7f98888bbbfc61f68fa291c13aba96a785f74a81b6f9b6f653bcbd87a6f85df8b59cd3c579edb9aab1c943a99ffad6e73cf28bf9bbb75f968600b9b650a8b000b5cc65a68e97d3ef80aeb9bea4f4439abd99a9ea37e2a3; YD00517437729195%3AWM_TID=pJYUp8Detk5AUUUUFFc6upRtNshfmnQX; captcha_session_v2="2|1:0|10:1647226538|18:captcha_session_v2|88:K3FHSUEwVGRlUjZHeE1yYXRhd2FkOE5SdENvaGpOVWNSYnhUTFozRWprNVI3NTFOY2hVbUxMcFV2clpETS9ONw==|75a5495f53059383734840353dd2faf638b430ca219532384d19d4f84ee1dabc"; captcha_ticket_v2="2|1:0|10:1647227059|17:captcha_ticket_v2|704:eyJ2YWxpZGF0ZSI6IkNOMzFfclppa3p3YUl6RmFjNHFySU9tcXU4aF9DdHRIQVVBanpJZEE0a29mcGQuck1Td0phUFFjblFkUHRYRE11NzRsZlVvLklZQ21UTGF0X245elh2ajZIdm9aaWc0cEtYaGlOV3lEU2tQQ1dVdHk1UDdWeXJwRjZjYmdzWTVQX20yY3VwZHFsNV9McDREWENHWHZlUFlwdzc1WThNQkh5OGlBS0lRUUlOOVRqNlppSlZwR0E4aEFmMklfbWJLU2FmcXlJYXptNlpnVnpZS0FHeTFDLlAxY01qZ194NWxKdHpBOTVFcloueERvUDZKcjVVQTlDRllxWS5feUVldXRiZmtmODV0c3F3OFVUMjg2d3dicnBnRnpzLWNMMWV4RW93WHZlX056WlNGSzAuWGYwR01QSGQyTkMxTlV4TFpCVU1JYlhhWEdud0p3Mm4yc2xNZmlGV3R3aU9Oa2lSY2dSaE5uLmFrSHdCS2JaRS1zeUpnazk0Y0JmZHQ3OGQwalcuMExqNHo2UldlN3BMLjdMUnR5QTZILVFObC5SZmhGejBEUjZDT0RwMU53U0dhejhJSkt3amdXMnlsRlZrUVVuZUlwMS5iVVQxUmRaTFc0ampmQmpsdXp4bloxbFMxMFJoeFFiY09JSVlNTFlhOTBxanVtbXB3U21JaHpyWkNOMyJ9|83578e436c3ba4ce951d646b486c40235463ce0ef36549035133eafcf673b951"; z_c0="2|1:0|10:1647227093|4:z_c0|92:Mi4xaW5CWUdRQUFBQUFBUUpfUHZ0dVhGQ1lBQUFCZ0FsVk4xZjRiWXdDTDh5WDhCZ3p1OXRWYUM1bjJTdlFldUpOam1B|05d026c9afb59cf9473fee0aa1932187679165d1f2087773858b498e59fd43b5"; unlock_ticket="ADAc3rNA2xAmAAAAYAJVTd23LmLgVf9iSIfxIq9hAeRn6vlsyDKv8g=="; q_c1=51a6e1898c4d46a594865b3db1dd3e95|1647227093000|1647227093000; NOT_UNREGISTER_WAITING=1; tst=r; SESSIONID=X18ufN7wHKFtbGUJju9z25azK9KyuqsGMNJpS7FXDeH; KLBRSID=b33d76655747159914ef8c32323d16fd|1647227133|1647226530',
# # 浏览器反爬的反反爬
# 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
# }
# response = requests.get('https://www.zhihu.com/', headers=headers)
# print(response.text)
二、html基础
1.html基本结构
一个网页是一个html标签(一个页面就是一个html标签)
一个html标签中包含一个head标签和一个body标签
head标签 - 代表网页头部
body标签 - 代表网页内容部分
三、html常用标签
html就是通过不同的标签来给网页提供不同的内容
1.标签语法
1)双标签:<标签名 属性名1=“属性值1” 属性名2=“属性值2” …>标签内容</标签名>
2)单标签:<标签名 属性名1=“属性值1” 属性名2=“属性值2” …> 或者 <标签名 属性名1=“属性值1” 属性名2=“属性值2” …/>
说明:
标签名 - 不由程序员自己命名,而是由html定死的(有哪些标签;不同的标签是干嘛用的)
属性 - 属性名="属性值"的形式存在,属性值必须在双引号中,多个属性用空格隔开
标签内容 - 标签内容可是任何内容,包括:纯文字、其他一个或者多个标签
<!DOCTYPE html>
<html>
<head>
<!--设置网页编码方式-->
<meta charset="UTF-8">
<!--设置网页标题-->
<title>百度一下,你就知道</title>
<!--设置网页图标
rel - icon, 固定写法
href - 图片地址
-->
<link rel="icon" href="img/baidu.jpeg">
</head>
<body>
hello world!
<!-- 1. 标题标签: h1 ~ h6-->
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<h6>六级标题</h6>
<h1>铁路:即时起,3月15日0时前已购车票免费退票</h1>
<!-- 2.段落标签: p-->
<p>针对近日全国部分地区出现多点零星散发病例和局部聚集性疫情,为配合各地政府减少人员流动、减少旅途风险、减少人员聚集等疫情防控政策的落实,铁路部门将迅速大幅调整旅客列车开行,并出台旅客列车车票免费退票措施。</p>
<p>自即时起,旅客在车站、12306网站等各渠道,办理2022年3月15日0时前已购各次列车有效车票退票时,均不收取退票手续费,购买铁路乘意险和互联网订餐的一同办理。</p>
<p>我是段落1</p>
<br>
<br>
<p>我是段落2</p>
<!-- 3.普通文字标签:span、font-->
<span>发布时间: 2022-03-14 13:53</span>
<span>|</span>
<span>北京日报报业集团</span>
<!-- 4.带效果的文字标签:
加粗 - b、strong、
倾斜 - i、em
-->
<p>针对近日全国部分地区出现多点零星散发病例和局部<b>聚集性疫情</b>,
为配合各地政府减少人员<strong>流动</strong>、减少<i>旅途风险</i>、
减少人员聚集等疫情防控政策的落实,铁路部门将迅速大幅调整旅客列车开行,
并出台旅客列车车票<b><i>免费退票</i></b>措施。</p>
<!-- 5.换行和空格
标签内容和网页内容在代码中直接按回车和空格键无效。
换行 - <br>
空格 - (空一个像素)  (空一个空格)
-->
床前明月光,<br><br>
  疑是地上霜。<br><br>
举头望明月,<br><br>
低头思故乡。<br><br>
<!-- 6.图片标签: img
src属性 - 图片地址
title属性 - 图片标题(鼠标悬停在图片上才会显示)
-->
<!-- 本地图片 -->
<img src="img/image1.png" title="鸡蛋">
<!-- 网络图片 -->
<img title="百度" src="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" >
<!-- 7.超链接: a-
标签内容 - 超链接可见可点击的部分
href属性 - 跳转地址
target属性 - 设置跳转方式,_blank表示在新的页面中加载新的网页(默认是_self)
->
<!-- 文字超链接 -->
<a href="https://www.baidu.com" target="_blank">百度</a>
<!-- 图片超链接 -->
<a href="https://www.baidu.com">
<img src="img/baidu.jpeg" >
</a>
<!-- 复杂结构的超链接 -->
<br>
<a href="https://www.baidu.com">
<img src="img/image1.png" >
<span>点我试试</span>
</a>
<!-- 8.列表标签
1)无序列表:ul-li
ul - 列表
li - 列表中的元素
2)有序列表:ol-li
-->
<h3>千锋学科:</h3>
<ul>
<li>python</li>
<li>java</li>
<li>前端</li>
<li>UI</li>
<li>物联网</li>
</ul>
<h3>香椒牛肉做法:</h3>
<ol>
<li>牛肉煮7分熟,切片</li>
<li>烧油,放干海椒、花椒、姜、蒜爆香</li>
<li>放入牛肉</li>
</ol>
<h3>千锋学科:</h3>
<ul>
<li>
<h5>Python</h5>
<img src="https://img1.baidu.com/it/u=1558613660,1302487091&fm=253&fmt=auto&app=138&f=JPEG?w=250&h=250" >
<p>因为Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Linux上也是能够运行的</p>
</li>
<li>
<h5>前端开发</h5>
<img src="https://img0.baidu.com/it/u=3444436244,4293062449&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=281" >
<p>前端即网站前台部分,运行在PC端,移动端等浏览器上展现给用户浏览的网页。随着互联网技术的发展,HTML5,CSS3,前端框架的应用,跨平台响应式网页设计能够适应各种屏幕分辨率</p>
</li>
</ul>
</body>
</html>
表单相关标签
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- 1.input标签: type不同功能不一样-->
<!-- 1)文字输入框:空或者text
placeholder属性 - 输入提示信息
-->
<label for="user">用户名:</label>
<input type="text" placeholder="手机号/邮箱"/ id="user">
<!-- 2) 密码输入框:password -->
<br><br>
<span>密 码:</span>
<input type="password" placeholder="密码"/>
<!-- 3)单选按:radio
注意:如果需要多个选项中选一个,必须让他们的name属性值相同
-->
<br><br>
<input type="radio" name="gender" id="g1"/><label for="g1">男</label>
<input type="radio" name="gender" id="g2"/><label for="g2">女</label>
<!-- 4)复选按钮:checkbox -->
<br><br>
<input type="checkbox" id="b1"/><label for="b1">篮球</label>
<input type="checkbox" id="b2"/><label for="b2">足球</label>
<input type="checkbox" id="b3"/><label for="b3">乒乓球</label>
<input type="checkbox" id="b4"/><label for="b4">羽毛球</label>
<!-- 5)普通按钮: button-->
<br><br>
<input type="button" value="确定"/>
<button>取消</button>
<button>
<img src="img/baidu.jpeg" >
</button>
<!-- 6)其他 -->
<br><br>
<input type="color" />
<input type="datetime-local"/>
</body>
</html>
常用标签
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- 1. 多行文本域(多行输入框): textarea
标签内容 - 输入框显示内容
placeholder属性 - 输入提示信息
maxlength属性 - 最多输入的字符的个数
-->
<textarea rows="4" cols="20" placeholder="输入提示信息..." maxlength="1000">输入框内容!</textarea>
<!-- 2. 下拉列表:select-option -->
<select>
<option value ="四川省">四川省</option>
<option value ="吉林省">吉林省</option>
<option value ="河北省">河北省</option>
<option value ="辽宁省">辽宁省</option>
</select>
<select>
<optgroup label="四川省">
<option value ="">成都市</option>
<option value ="">绵阳市</option>
<option value ="">乐山市</option>
<option value ="">眉山市</option>
<option value ="">内江市</option>
<option value ="">德阳市</option>
</optgroup>
<optgroup label="辽宁省">
<option value ="">沈阳市</option>
<option value ="">大连市</option>
<option value ="">铁岭市</option>
<option value ="">盘锦市</option>
</optgroup>
<optgroup label="广东省">
<option value ="">广州市</option>
<option value ="">深圳市</option>
<option value ="">东莞市</option>
<option value ="">佛山市</option>
<option value ="">中山市</option>
</optgroup>
</select>
<!-- 3.无语义标签:div
主要用于对网页内容进行分块的或者让多个标签变成一个整体
-->
</body>
</html>
css基础
css(层叠样式表,简称样式、样式表)负责网页内容的布局和样式
1.css代码写在哪儿
1)内联样式表:将css代码写在标签的style属性中
2)内部样式表:将css代码写在style标签中
3)外部样式表:将css代码写在css文件中,然后在html代码中用link标签导入
2.css代码怎么写
css语法:
选择器{属性1:属性值1; 属性2:属性值2;...}
选择器是用来选中需要设置样式的标签的
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- 1. 内联样式表 -->
<p style="color: red;">我是段落1</p>
<a href="https://www.baidu.com" style="color: seagreen; font-size: 20px;">百度</a>
<!-- 2.内部样式表 -->
<style>
#a1{
color: aqua;
}
#p1{
font-size: 30px;
}
</style>
<p id="p1">我是段落2</p>
<a id="a1" href="https://www.iqiyi.com/">爱奇艺</a>
<!-- 3. 外部样式表-->
<link rel="stylesheet" type="text/css" href="css/test.css"/>
<a id="a2" href="https://movie.douban.com/top250">豆瓣电影</a>
</body>
</html>
重要
<!--
1. 元素选择器(标签选择器)
将标签名作为选择器,选中所有的指定标签;
例如: a{} - 选中所有的a标签
p{} - 选中所有的p标签
2. id选择器
在id属性值前加#作为一个选择器,选中id属性值是指定值的标签(id是唯一);
例如:#a1{} - 选中id属性值为a1的标签
3. class选择器
在class属性前加.作为一个选择器,选中class属性值是指定值的标签
(不同的标签可以有相同的class值,同一个标签可以有不同的class);
例如:.c1{} - 选中所有class属性值为c1的标签
.c1.c2{} - 选中所有class属性值同时为c1和c2的标签
p.c1{} - 选中class值为c1的所有p标签
4. 群组选择器
将多个选择器用逗号隔开作为一个选择器, 选中每个独自选择器选中的所有标签;
例如:p,a{} - 选中所有的p标签和a标签
p,.c1{} - 选中所有的p标签和所有class值为c1的标签
5. 子代选择器
将多个选择器用>隔开作为一个选择器
例如: div>#p1>a - 选中div下面的id为p1标签下面的a标签 (前后必须是父子关系)
6. 后代选择器
将多个选择器用空格隔开作为一个选择器
例如:div div a - 选中div下面的div下面的a标签 (前后是后代关系)
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- 1. 元素选择器 -->
<!-- <style type="text/css">
p{
color: red;
}
a{
color: green;
}
</style> -->
<!-- 2.id选择器 -->
<!-- <style type="text/css">
#p3{
color: red;
}
</style> -->
<!-- 3.class选择器 -->
<!-- <style type="text/css">
.c1{
color: red;
}
.c2{
font-size: 40px;
}
.c1.c2{
background-color: yellow;
}
</style> -->
<!-- 4.群组选择器 -->
<!-- <style type="text/css">
a,.c1,span{
color: red;
}
</style> -->
<!-- 5.子代选择器 -->
<!-- <style type="text/css">
div>div>p{
color: red;
}
</style> -->
<!-- <style type="text/css">
div>div p{
color: red;
}
</style> -->
<p id="p1" class="c1">我是段落1</p>
<div id="box">
<p id="p2">我是段落2</p>
<span>我是span1</span>
</div>
<div>
<p id="p3" class="c1">我是段落3</p>
<div>
<ul>
<li><p id="p4" class="c2">我是段落5</p></li>
<div id="">
<p>我是段落6</p>
</div>
</ul>
<p id="p4" class="c2">我是段落4</p>
</div>
<a id="a1" href="">我超链接2</a>
</div>
<a href="" id="a2" class="c1 c2">我是超链接1</a>
</body>
</html>