首页 > 编程知识 正文

入门Python爬虫知识点梳理

时间:2023-11-20 11:24:52 阅读:302023 作者:LJBQ

本文将介绍入门Python爬虫的基础知识点,并给出相应的代码示例。通过学习本文,读者将获得关于Python爬虫的基础知识和操作经验。

一、请求与响应

在进行网页爬取时,我们需要向服务器发送请求,并接收服务器返回的响应。Python提供了多种库来实现这一功能,常用的有urllib和requests。

使用urllib库发送GET请求的示例代码如下:

import urllib.request

response = urllib.request.urlopen('http://www.example.com')
html = response.read().decode('utf-8')
print(html)

使用requests库发送GET请求的示例代码如下:

import requests

response = requests.get('http://www.example.com')
html = response.text
print(html)

二、解析HTML

爬取到的网页内容通常是HTML格式的,我们需要从中提取出所需的数据。Python提供了多种库来解析HTML,如BeautifulSoup和lxml。

使用BeautifulSoup库解析HTML的示例代码如下:

from bs4 import BeautifulSoup

html = '

Hello, World!

' soup = BeautifulSoup(html, 'html.parser') print(soup.h1.text)

使用lxml库解析HTML的示例代码如下:

from lxml import etree

html = '

Hello, World!

' tree = etree.HTML(html) print(tree.xpath('//h1/text()')[0])

三、保存数据

在爬取到数据后,我们需要将其保存下来供后续使用。Python提供了多种方法来保存数据,如保存为文本文件、CSV文件、Excel文件或数据库。

将数据保存为文本文件的示例代码如下:

data = 'Hello, World!'
with open('data.txt', 'w') as f:
    f.write(data)

将数据保存为CSV文件的示例代码如下:

import csv

data = [['Name', 'Age'], ['Alice', 20], ['Bob', 30]]
with open('data.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(data)

将数据保存到Excel文件的示例代码如下:

import pandas as pd

data = {'Name': ['Alice', 'Bob'], 'Age': [20, 30]}
df = pd.DataFrame(data)
df.to_excel('data.xlsx')

将数据保存到数据库的示例代码如下:

import sqlite3

conn = sqlite3.connect('data.db')
cursor = conn.cursor()

cursor.execute('''CREATE TABLE IF NOT EXISTS users
                  (id INTEGER PRIMARY KEY AUTOINCREMENT,
                   name TEXT,
                   age INTEGER)''')
cursor.execute('''INSERT INTO users (name, age)
                  VALUES (?, ?)''', ('Alice', 20))

conn.commit()
conn.close()

四、处理网页链接

在爬取网页时,经常会遇到相对链接和绝对链接的转换、链接合并等问题。Python提供了多种方法来处理网页链接,如urljoin和urllib.parse。

使用urljoin函数处理网页链接的示例代码如下:

from urllib.parse import urljoin

base_url = 'http://www.example.com'
relative_url = '/about.html'
absolute_url = urljoin(base_url, relative_url)
print(absolute_url)

使用urllib.parse模块处理网页链接的示例代码如下:

from urllib.parse import urlparse, urlunparse

url = 'http://www.example.com/about.html'
parsed_url = urlparse(url)
new_parsed_url = parsed_url._replace(netloc='new.example.com')
new_url = urlunparse(new_parsed_url)
print(new_url)

五、处理动态网页

有部分动态生成的网页内容无法直接通过请求获取,此时可以使用Selenium库进行模拟浏览器操作。Selenium可以模拟浏览器行为,如点击按钮、填写表单等。

使用Selenium模拟浏览器操作的示例代码如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://www.example.com')
element = driver.find_element_by_tag_name('h1')
print(element.text)
driver.quit()

六、处理验证码

有些网站为了防止机器人爬取,会使用验证码进行验证。我们可以使用第三方库来自动识别验证码,如tesseract和pytesseract。

使用pytesseract识别验证码的示例代码如下:

import pytesseract
from PIL import Image

image = Image.open('captcha.png')
code = pytesseract.image_to_string(image)
print(code)

七、使用代理

在进行大规模爬取时,为了防止被服务器封禁IP,我们可以使用代理来隐藏真实IP地址。Python提供了多种库来使用代理,如requests和proxies。

使用代理进行爬取的示例代码如下:

import requests

proxies = {'http': 'http://127.0.0.1:8888'}
response = requests.get('http://www.example.com', proxies=proxies)
print(response.text)

八、定时任务

有些爬虫需要定时执行,可以使用第三方库来实现定时任务的功能,如APScheduler。

使用APScheduler实现定时任务的示例代码如下:

from apscheduler.schedulers.blocking import BlockingScheduler

scheduler = BlockingScheduler()

def job():
    print('Hello, World!')

scheduler.add_job(job, 'interval', seconds=5)
scheduler.start()

本文仅介绍了入门Python爬虫的一些基础知识点和操作经验,希望读者能够通过学习本文,进一步深入研究和应用爬虫技术。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。