【Python基础】爬取豆瓣电影Top250+爬取知乎专栏文章标题

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨

📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852

📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉

📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

文章目录

  • 一、Python爬虫基础知识
    • [1. 什么是爬虫?](#1. 什么是爬虫?)
    • [2. 爬虫的基本原理](#2. 爬虫的基本原理)
    • [3. 爬虫的技术栈](#3. 爬虫的技术栈)
    • [4. 爬虫的对象](#4. 爬虫的对象)
    • [5. 爬虫的使用及环境依赖构建](#5. 爬虫的使用及环境依赖构建)
  • 二、Python爬虫实例
    • [1. 爬取豆瓣电影Top250](#1. 爬取豆瓣电影Top250)
    • [2. 爬取知乎专栏文章标题](#2. 爬取知乎专栏文章标题)
  • 三、反爬机制

一、Python爬虫基础知识

1. 什么是爬虫?

爬虫是一种自动获取网页内容的程序,它可以从互联网上抓取所需的信息。爬虫可以用于各种场景,如数据挖掘、信息收集等。

2. 爬虫的基本原理

爬虫的基本原理是通过发送HTTP请求(如GET或POST)来获取网页内容,然后解析网页内容,提取所需信息。常用的解析方法有正则表达式、BeautifulSoup和XPath等。

3. 爬虫的技术栈

常见的爬虫技术栈包括:

  • 编程语言:Python
  • 网络库:requests、urllib
  • 解析库:BeautifulSoup、lxml、re
  • 数据库:MySQL、MongoDB
  • 框架:Scrapy、PySpider

4. 爬虫的对象

爬虫对象主要包括以下几个部分:

  • 用户代理:模拟浏览器访问,避免被网站识别为爬虫。
  • 请求头:设置请求头,模拟浏览器行为。
  • 请求方法:如GET、POST等。
  • 请求参数:如URL参数、表单参数等。
  • 响应对象:包含响应状态码、响应头、响应内容等信息。

5. 爬虫的使用及环境依赖构建

使用爬虫需要先安装相关库,如requests、BeautifulSoup等。可以使用pip进行安装:

bash 复制代码
pip install requests
pip install beautifulsoup4

二、Python爬虫实例

1. 爬取豆瓣电影Top250

目标网址:https://movie.douban.com/top250

代码实现:

python 复制代码
import requests
from bs4 import BeautifulSoup

def get_movie_info(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    movie_list = soup.find('ol', class_='grid_view')
    for movie_li in movie_list.find_all('li'):
        detail = movie_li.find('div', class_='hd')
        movie_name = detail.find('span', class_='title').text
        movie_url = detail.a['href']
        print(movie_name, movie_url)

if __name__ == '__main__':
    base_url = 'https://movie.douban.com/top250?start='
    for i in range(0, 250, 25):
        url = base_url + str(i)
        get_movie_info(url)

2. 爬取知乎专栏文章标题

目标网址:https://zhuanlan.zhihu.com/p/xxxx

代码实现:

python 复制代码
import requests
from bs4 import BeautifulSoup

def get_article_title(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    title = soup.find('h1', class_='Post-Title').text
    print(title)

if __name__ == '__main__':
    url = 'https://zhuanlan.zhihu.com/p/xxxx'
    get_article_title(url)

三、反爬机制

  1. IP限制:网站会限制同一IP地址的访问次数,超过限制后需要更换IP地址。
  2. User-Agent检测:网站会检测请求头中的User-Agent,如果发现是爬虫,可能会拒绝访问。可以通过设置不同的User-Agent来绕过检测。
  3. Cookie和Session:网站会使用Cookie和Session来识别用户,可以通过模拟登录或者使用cookie池来绕过识别。
  4. 验证码和滑块验证:网站会使用验证码和滑块验证来防止自动化操作,可以通过OCR识别或者模拟滑动滑块来绕过验证。
相关推荐
解救女汉子几秒前
如何在Python中正确使用MongoDB事务
jvm·数据库·python
刚子编程几秒前
C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生
开发语言·c#·事务处理·trycatch
2301_814809861 分钟前
Layui表单提交时如何防止用户重复点击提交按钮
jvm·数据库·python
qq_413847404 分钟前
SQL连接查询中处理NULL值的技巧_利用COALESCE处理JOIN结果
jvm·数据库·python
m0_734949795 分钟前
mysql如何通过Docker快速搭建_mysql容器化部署实践
jvm·数据库·python
lsx2024066 分钟前
jEasyUI 自定义对话框
开发语言
2301_796588509 分钟前
Golang怎么处理JSON大数字精度_Golang如何避免前端JavaScript解析大整数丢失精度【避坑】
jvm·数据库·python
吕源林11 分钟前
如何使用关联数组_Index-By Table集合类型定义与遍历
jvm·数据库·python
陶然同学11 分钟前
【Python】文件操作
开发语言·python
2301_7751481514 分钟前
如何配置物化视图只进行完全刷新_COMPLETE Refresh的强制刷新场景
jvm·数据库·python