Big Red
来自CloudWiki
目录
第2章 建立网络爬虫
第一个网络爬虫
数值类型:整型,浮点型,复数型。 字符串类型
import requests r = requests.get("http://www.baidu.com")#打开一个网页 print(r.status_code) #返回状态 r.encoding = 'utf-8' print(r.text) #观察返回的内容
- 常量:其值不发生改变的数据对象
- 变量:使用id()函数可以查看变量的内存地址
基本命令
例如:
print("Hello World!")
1.字符串
例如:
string1='Python Web Scrappy' string2="by Santos" string3=string1+""+string2 print(string3)
索引从0开始:
print("list1[0]:",list1[0]) print("list2[1:3]:",list2[1:3]) list1[0]: python list2[1:3]:[2,3]
修改列表中的值:
list1[1]="new" print(list1) ['python','new','Scrappy']
- 字符串是最常见的数据类型,一般用来存储类似“句子”的数据,并放在单引号或双引号中。
2.数字
例如:
int1=7 float1=7.5 trans_int=int(float1) print(trans_int)
- 数字用来存储数值,包含两种常用的数字类型:整数和浮点数,浮点数由整数和小数部分组成。
3.列表
例如:
list1=['python','web','scrappy'] list2=[1,2,3,4,5] list3=["a",2,"o",4]
- 如果需要把字符串和数字襄括起来,就可以使用列表。
4.字典
例如:
namebook={"Name":"Alex","Age":7,"Class":"First"} print(namebook["Name"]) print(namebook) Alex {'Name':'Alex','Age':7,'Class':'First'}
遍历访问字典中的每一个值:
for key,value in namebook.items(): print(key,value) Name Alex Age 7 Class First
- 字典是一种可变容器模型,每个存储的值都对应着一个键值key,key必须唯一,但是值不用。值也可以取任何数据类型。
函数
定义一个函数:
例如:
def calulus(x): y=x+1 return y result=calulus(2) print(result)
参数必须要正确地写入函数中,函数的参数也可以为多个
例如:
def fruit_function(fruit1,fruit2): fruits=fruit1+""+fruit2 return fruits result=fruit_function("apple","banana") print(result)
- 在代码很少的时候,按照逻辑写完就能很好地运行。
面向对象编程
例如:
book="Python" if book=="Python": print("You are studying python.") else: print("Wrong.")
如果需要判断的有多种条件,就需要用到elif
例如:
book="java" if book=="Python": print("You are studying python.") elif:book=="java": print("You are studying java.") else: print("Wrong.")
- 循环语句能让我们执行一个代码片段多次,循环分为for循环和while循环。
for循环能在一个给定的顺序下重复执行
例如:
citylist=["Beijing","Shanghai","Guangzhou"] for eachcity in citylist: print(eachcity)
while循环能不断重复执行,只要能满足一定条件
例如:
count=0 while count<3: count+=1 print (count)
- 条件语句可以使得当满足条件的时候才执行某部分代码。
条件语句和循环语句
第3章 静态网页抓取
获取相应内容
例:获取QQ空间主页内容
import requests r=requests.get('https://user.qzone.qq.com/328911422/infocenter') print("文本编码:",r.encoding) print("响应状态码:",r.status_code) print("字符串方式的相应体:",r.text)
定制Requests
传递URL参数
例:传递key1=value1和key2=value2到https://user.qzone.qq.com/1150117452/main
import requests key_dict={'key1':'walue1','key2':'value2'} r=requests.get('https://user.qzone.qq.com/1150117452/main') print("URL已经正确编码:",r.url) print("字符串方式的相应体:\n",r.text)
定制请求头
例如:
import requests headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36', 'Host':'m.douban.com' } r = requests.get('https://movie.douban.com/subject/1292052/',headers=headers) print("响应状态码:",r.status_code)
定制请求头
import requests key_dict={'key1':'walue1','key2':'value2'} r=requests.post('https://user.qzone.qq.com/1150117452/main') print(r.text)
Requests爬虫实战:TOP250电影数据
项目实践
import requests def get_movies(): headers={ 'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64)AppleWobKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82Safari/537.36', 'Host': 'movie.douban.com' } for i in range(0,10): link = 'https://movie.douban.com/top250?start=' + str(1 * 25) r = requests.get(link,headers, timeout=10) print(str(i+1),"页响应状态码:",r.status_code) print(r.text) get_movies()