Python爬虫
要求
必须遵守一些规则
- 不要爬取公民隐私数据,
- 不要爬取受著作权保护的内容,
- 不要爬取国家事务、国防建设、尖端科学技术领域的计算机系统等
必须是一只温和善良的虫
它的请求数量和频率不能过高,否则可能无异于DDoS攻击
DDoS攻击就是通过给服务器发送海量高频的请求,让网站资源被耗尽,无法服务其它正常用户
网站如果明显做出了反爬限制,比如有些内容要登录后才可查看,或是有验证码等限制机器的机制就不要去强行突破
可以通过查看网站的robots.txt文件,这个文件会指明哪些网页允许被爬取,哪些网页不允许被爬取,有些还会专门列出针对搜索引擎爬虫的许可范围
正式学习
第一步:获取网页内容
HTTP请求
HTTP响应
常见的状态码和状态消息
第二步:解析网页内容
Beautiful Soup
根据网页的标签,以及Beautiful Soup
的方法进行特殊编写
第三步:储存或分析数据
可以选择通过pandas的方法
实战代码
python
import requests
from bs4 import BeautifulSoup
import pandas as pd
titles = []
stars = []
inqs = []
# 模拟浏览器
headers = {"User-Agent": "Mozilla/5.0 (windows NT 10.0; win64; x64)"}
# 对网页的页数进行遍历
for start_num in range(0,250,25):
response = requests.get(f"http://movie.douban.com/top250?start={start_num}",headers = headers)
# 获取html的内容
html = response.text
# 通过BeautifulSoup解析网页,只解析html的内容
soup = BeautifulSoup(html,"html.parser")
# 根据标签,获取内容
all_title = soup.findAll("span",attrs={"class":"title"})
all_star = soup.findAll("span",attrs={"class":"rating_num"})
all_inq = soup.findAll("span",attrs={"class":"inq"})
# 循环得到每一个值
for title,star,inq in zip(all_title,all_star,all_inq):
title_string = title.string
star_string = star.string
inq_string = inq.string
if "/" not in title_string:
# print(title_string)
# print(star_string)
# print(inq_string)
titles.append(title_string)
stars.append(star_string)
inqs.append(inq_string)
# 取数据,建表头
data = {"Title": titles, "Rating": stars,"inq":inqs}
# 存数据
df = pd.DataFrame(data)
# 存为excel
df.to_excel("movies.xlsx", index=False)