当前位置: 首页> 游戏> 网游 > 温州网站建设方案托管_互联网公司排名2014_宁波最好的seo外包_百度官网登录

温州网站建设方案托管_互联网公司排名2014_宁波最好的seo外包_百度官网登录

时间:2025/7/12 18:32:54来源:https://blog.csdn.net/bjjgff/article/details/146130125 浏览次数:0次
温州网站建设方案托管_互联网公司排名2014_宁波最好的seo外包_百度官网登录

全篇大概 5000 字(含代码),建议阅读时间 40min


一、Python爬虫简介

1.1 什么是网络爬虫?

定义:
网络爬虫(Web Crawler)是自动浏览互联网并采集数据的程序,就像电子蜘蛛在网页间"爬行"。

分类

  • 通用爬虫:Google等搜索引擎的爬虫
  • 聚焦爬虫:定向采集特定领域数据(如电商价格)
  • 增量式爬虫:只抓取更新内容
  • 深层爬虫:抓取需要登录的页面

1.2 Python爬虫的优势

示例对比:

//Java实现HTTP请求
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://aizlian.xyz")).build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
#Python实现同样功能
import requests
response = requests.get("https://aizlian.xyz")

优势对比

  • 语法简洁:代码量减少50%
  • 库生态丰富:requests(网络请求)、BeautifulSoup(HTML解析)、Scrapy(框架)等
  • 跨平台:Windows/MacOS/Linux通用
  • 调试方便:REPL环境快速测试代码

二、环境搭建

2.1 Python环境安装

进入Python官网,下载与电脑系统匹配的版本。
请添加图片描述
下载完成后,按照提示完成环境安装。
验证安装:在终端命令行窗口输入命令

python --version

输出以下提示,说明安装成功。
请添加图片描述

三、Requests库

相比Python内置的urllibrequesets设计更简洁直观,例如发送GET请求仅需一行代码:requests.get(url)

3.1 安装与导入

安装 requests

pip install requests

导入requests

import requests

3.2 发送GET请求

通过requests.get()获取网页内容:

response = requests.get("https://aizlian.xyz")

​状态码:检查请求是否成功(200表示成功):

print(response.status_code)  # 输出:200

​文本内容:获取网页HTML或文本:

print(response.text)  # 输出网页内容

全部代码

import requestsresponse = requests.get("https://aizlian.xyz")print(response.status_code)
print(response.text)

3.3 发送POST请求

requests.post() 提交数据(如表单或登录):

import requests
# 提交表单数据
data = {"username": "admin", "password": "123456"}
response = requests.post("https://httpbin.org/post", data=data)# 提交JSON数据
json_data = {"key": "value"}
response = requests.post("https://httpbin.org/post", json=json_data)

3.4 处理响应内容

​解析JSON:直接转为Python字典:

data = response.json()
print(data)  # 输出解析后的JSON

​二进制内容​(如下载图片):

import requests
response = requests.get("图片网址")
with open("image.jpg", "wb") as f:f.write(response.content)  # 保存二进制数据

3.5 参数

​URL参数:通过params添加查询参数:

params = {"page": 1, "limit": 10}
response = requests.get("https://httpbin.org/get", params=params)

​请求头:伪装浏览器标识(避免被反爬):

headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)

3.6 异常处理


if response.status_code == 200:print("请求成功!")
else:print("请求失败,状态码:", response.status_code)

四、​BeautifulSoup库

解析复杂HTML/XML文档,将网页转化为可操作的树形结构

4.1 安装与导入

安装

pip install beautifulsoup4 
pip install lxml 

导入

from bs4 import BeautifulSoup

4.2 核心功能

​文档对象创建

from bs4 import BeautifulSoup
# 通过字符串或requests响应创建对象[2,5](@ref)
soup = BeautifulSoup(HTML文档, 'lxml')  

元素定位三剑客

方法功能描述代码示例
find()获取第一个匹配元素soup.find(‘div’, id=‘header’)
find_all()返回所有匹配元素的列表soup.find_all(‘a’, class_=‘link’)
select()CSS选择器精准定位soup.select(‘div.content > p’)
select_one()返回第一个匹配的 CSS 选择器元素soup.select_one(‘.title’)
find_parent()查找当前标签的父级标签tag.find_parent(‘div’)
find_next()查找后续第一个符合条件的标签tag.find_next(‘p’)

数据提取技巧

  • 文本内容:tag.text(包含子标签文本)或 tag.get_text()
  • 属性值获取:tag['href']tag.get('src')(避免KeyError)
  • 嵌套处理:通过.parent / .children遍历文档树

4.3 动态网页数据抓取


import requests
from bs4 import BeautifulSoupurl = 'https://www.aizlian.xyz'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')cates = []
for cate in soup.select('.col-4'):cates.append(cate.a['href'])print(cates)

五、数据存储

5.1 CSV存储最佳实践

安装

pip install csv

使用DictWriter避免列错位:

import csvdata = [{'name': '商品A', 'price': 299},{'name': '商品B', 'price': 599}
]with open('products.csv', 'w', newline='', encoding='utf-8-sig') as f:writer = csv.DictWriter(f, fieldnames=['name', 'price'])writer.writeheader()writer.writerows(data)

5.2 MySQL数据库操作

安装

pip install pymysql

连接池管理:

import pymysql
from dbutils.pooled_db import PooledDBpool = PooledDB(creator=pymysql,host='localhost',user='root',password='pass123',database='crawler_db',maxconnections=5
)# 使用连接
conn = pool.connection()
cursor = conn.cursor()
cursor.execute("INSERT INTO movies VALUES (%s, %s)", ("泰坦尼克号", 9.4))
conn.commit()

六、实战

实战项目:豆瓣电影Top250
完整代码(含异常处理):

import requests
from bs4 import BeautifulSoup
import csv
import timedef get_movie_info(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36','Accept-Language': 'zh-CN,zh;q=0.9'}try:response = requests.get(url, headers=headers, timeout=10)response.raise_for_status()  # 自动处理HTTP错误soup = BeautifulSoup(response.text, 'lxml')movies = []for item in soup.find_all('div', class_='item'):# 使用CSS选择器精确提取title = item.select_one('.title').text.strip()rating = item.select_one('.rating_num').text.strip()link = item.find('a')['href']movies.append([title, rating, link])return moviesexcept Exception as e:print(f"抓取失败:{e}")return []def main():base_url = "https://movie.douban.com/top250?start={}"with open('douban_top250.csv', 'w', newline='', encoding='utf-8-sig') as f:writer = csv.writer(f)writer.writerow(['排名', '电影名称', '评分', '详情链接'])for page in range(0, 250, 25):url = base_url.format(page)movies = get_movie_info(url)for idx, movie in enumerate(movies, start=page+1):writer.writerow([idx] + movie)print(f"已抓取第{page//25+1}页数据")time.sleep(2)if __name__ == '__main__':main()

执行完程序之后我们可以看到csv文件中已经有内容了。
请添加图片描述

关键字:温州网站建设方案托管_互联网公司排名2014_宁波最好的seo外包_百度官网登录

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: