python爬虫基础知识点整理

Python爬虫基础知识点整理

在当今数据驱动的时代,爬虫已经成为从互联网中提取信息的重要方式之一。Python作为一种多功能的编程语言,具有强大的爬虫功能,广泛应用于网络数据抓取和分析。本文将介绍Python爬虫的基础知识点,包括如何发送HTTP请求、解析HTML页面、处理Cookie和Session、使用代理IP等常用技术。

发送HTTP请求

爬虫的第一步是发送HTTP请求来获取网页的内容。Python的标准库urllib提供了一个简单而强大的HTTP客户端,可以用来发送GET和POST请求。

import urllib.request

# 发送GET请求

response = urllib.request.urlopen('http://www.example.com')

html = response.read().decode('utf-8')

# 发送POST请求

data = {'username': 'admin', 'password': '123456'}

data = urllib.parse.urlencode(data).encode('utf-8')

response = urllib.request.urlopen('http://www.example.com/login', data=data)

html = response.read().decode('utf-8')

在发送POST请求时,需要将数据进行编码,并指定请求的Content-Type为application/x-www-form-urlencoded。

解析HTML页面

爬虫获取到的页面通常是HTML格式的,需要使用解析库来提取有用的信息。Python中最流行的解析库是BeautifulSoup,它可以使用CSS选择器来查找和提取页面元素。

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

# 根据标签名提取元素

title = soup.title.string

# 根据CSS选择器提取元素

links = soup.select('a[href]')

for link in links:

print(link['href'], link.get_text())

使用Soup对象提取页面元素时,可以使用标签名、CSS选择器或XPath表达式。

处理Cookie和Session

有些网站在登录之后会使用Cookie或Session来标识用户身份,爬虫需要处理这些信息来模拟登录。Python的标准库http.cookiejar提供了一个简单的Cookie处理接口。

import http.cookiejar

import urllib.request

# 创建一个CookieJar对象来管理Cookie

cookiejar = http.cookiejar.CookieJar()

# 创建一个HTTPCookieProcessor对象来处理Cookie

handler = urllib.request.HTTPCookieProcessor(cookiejar)

# 创建一个OpenerDirector对象来发送HTTP请求和处理Cookie

opener = urllib.request.build_opener(handler)

# 发送登录请求

data = {'username': 'admin', 'password': '123456'}

data = urllib.parse.urlencode(data).encode('utf-8')

response = opener.open('http://www.example.com/login', data=data)

# 发送带有Cookie的请求

response = opener.open('http://www.example.com/profile')

html = response.read().decode('utf-8')

通过OpenerDirector对象发送请求时,会自动处理Cookie,因此可以保持用户的登录状态。

使用代理IP

为了在爬取网页时更好地隐藏自己的身份,可以使用代理IP来发送请求。Python的标准库urllib.request提供了简单的代理支持。

import urllib.request

# 创建一个ProxyHandler对象来处理代理

proxy_handler = urllib.request.ProxyHandler({'http': 'http://127.0.0.1:8080'})

# 创建一个OpenerDirector对象来发送请求和处理代理

opener = urllib.request.build_opener(proxy_handler)

# 发送请求

response = opener.open('http://www.example.com')

html = response.read().decode('utf-8')

通过ProxyHandler对象可以指定代理IP和端口,将请求发送到指定的代理服务器上。

总结

本文介绍了Python爬虫的基础知识点,包括发送HTTP请求、解析HTML页面、处理Cookie和Session、使用代理IP等常用技术。掌握了这些知识,可以更好地利用Python来开发强大的爬虫程序,并从互联网中提取有用的信息。