python爬虫最全教程_python网路爬虫基本教程第六单元协程爬虫基本示例

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

title = tree.findtext(‘.//title’)
print(“标题:”, title)

提取段落

paragraph = tree.findtext(‘.//p’)
print(“段落:”, paragraph)

提取超链接

link = tree.xpath(‘.//a/@href’)
print(“链接:”, link)

提取图片

img = tree.xpath(‘.//img/@src’)
print(“图片:”, img)


运行上述代码,您将得到与使用BeautifulSoup相同的输出结果。


通过使用BeautifulSoup或lxml库,您可以方便地解析和提取HTML文档中的内容。这对于从网页中获取数据或进行网页爬取非常有用。


#### 4. XPath和CSS选择器


了解XPath和CSS选择器的基本用法,它们是解析网页的常用工具。


### 【二、常用库】


#### 1. Requests


使用Requests库发送HTTP请求,获取网页内容。


#### 2. Beautiful Soup


使用Beautiful Soup库解析网页,提取需要的数据。


#### 3. Selenium


使用Selenium库模拟浏览器操作,处理动态网页和JavaScript渲染。


#### 4. Scrapy


学习使用Scrapy库,它是一个功能强大的爬虫框架,能够高效地爬取大量网页。


### 【三、实例演示】


#### 1. 简单爬虫


编写一个简单的爬虫程序,获取网页内容并保存到本地。



import requests

def save_webpage(url, filename):
response = requests.get(url)
if response.status_code == 200:
with open(filename, ‘w’, encoding=‘utf-8’) as file:
file.write(response.text)
print(f"网页内容已保存到文件 {filename} 中。")
else:
print(“无法获取网页内容。”)

指定要爬取的网页URL

url = “http://example.com”

指定保存的文件名

filename = “webpage.html”

调用函数进行爬取和保存

save_webpage(url, filename)


这个程序使用了Python的`requests`库来发送HTTP请求,并通过`get()`方法获取网页的内容。然后,判断响应的状态码是否为200,如果是,就将网页内容保存到指定的文件中。


您只需将上述代码保存为一个Python文件,运行即可。请确保您已经安装了`requests`库,可以使用以下命令安装:



pip install requests


您可以根据需要修改URL和文件名来爬取不同的网页内容并保存。


#### 2. 图片爬虫


编写一个爬虫程序,从网页中提取图片链接,并下载保存图片。



import requests
from bs4 import BeautifulSoup
import os

def download_image(url, save_path):
response = requests.get(url)
if response.status_code == 200:
with open(save_path, ‘wb’) as file:
file.write(response.content)
print(f"图片已保存到 {save_path}。")
else:
print(“无法下载图片。”)

def extract_image_links(url):
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, ‘html.parser’)
image_links = []
for img in soup.find_all(‘img’):
image_links.append(img[‘src’])
return image_links
else:
return []

def save_images_from_url(url, save_dir):
image_links = extract_image_links(url)
if not image_links:
print(“未找到图片链接。”)
return
if not os.path.exists(save_dir):
os.makedirs(save_dir)
for link in image_links:
image_url = link
image_name = link.split(‘/’)[-1]
save_path = os.path.join(save_dir, image_name)
download_image(image_url, save_path)

指定要爬取的网页URL

url = “http://example.com”

指定保存图片的文件夹

save_dir = “images”

调用函数进行爬取和保存图片

save_images_from_url(url, save_dir)


这个程序使用了Python的`requests`库来发送HTTP请求,并使用`BeautifulSoup`库来解析网页内容。首先,通过`extract_image_links()`函数从网页中提取所有图片链接。然后,通过`download_image()`函数下载并保存每个图片。


您只需将上述代码保存为一个Python文件,运行即可。请确保您已经安装了`requests`和`beautifulsoup4`库,可以使用以下命令安装:



pip install requests
pip install beautifulsoup4


您可以根据需要修改URL和保存图片的文件夹路径来爬取不同网页的图片并保存。


#### 3. 数据爬取


编写一个爬虫程序,从网页中提取指定数据,并保存到CSV、Excel或数据库中。



import requests
from bs4 import BeautifulSoup
import csv
import pandas as pd
import sqlite3

def extract_data(url):
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, ‘html.parser’)
# 在这里根据网页结构提取数据
# 示例:提取所有标题和内容
data = []
for item in soup.find_all(‘div’, class_=‘item’):
title = item.find(‘h2’).text.strip()
content = item.find(‘p’).text.strip()
data.append({‘title’: title, ‘content’: content})
return data
else:
return []

def save_to_csv(data, csv_file):
with open(csv_file, ‘w’, newline=‘’, encoding=‘utf-8’) as file:
writer = csv.DictWriter(file, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
print(f"数据已保存到 {csv_file}。")

def save_to_excel(data, excel_file):
df = pd.DataFrame(data)
df.to_excel(excel_file, index=False)
print(f"数据已保存到 {excel_file}。")

def save_to_database(data, db_file):
conn = sqlite3.connect(db_file)
c = conn.cursor()
c.execute(‘’‘CREATE TABLE IF NOT EXISTS data
(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT)’‘’)
c.executemany(“INSERT INTO data (title, content) VALUES (?, ?)”,
[(item[‘title’], item[‘content’]) for item in data])
conn.commit()
conn.close()
print(f"数据已保存到 {db_file}。")

指定要爬取的网页URL

url = “http://example.com”

指定保存数据的文件路径或数据库文件路径

csv_file = “data.csv”
excel_file = “data.xlsx”
db_file = “data.db”

调用函数进行爬取和保存数据

data = extract_data(url)
if data:
save_to_csv(data, csv_file)
save_to_excel(data, excel_file)
save_to_database(data, db_file)


将上述代码保存为一个Python文件,运行即可。请确保您已经安装了`requests`、`beautifulsoup4`、`pandas`和`sqlite3`库,可以使用以下命令安装:



pip install requests
pip install beautifulsoup4
pip install pandas


在示例代码中,`extract_data()`函数使用`beautifulsoup4`库从网页中提取数据。您可以根据网页结构修改该函数以提取您需要的数据。


然后,根据需要,使用`save_to_csv()`函数将数据保存到CSV文件,使用`save_to_excel()`函数将数据保存到Excel文件,或使用`save_to_database()`函数将数据保存到SQLite数据库中。您可以根据需要选择其中一个函数来保存数据。请注意,在将数据保存到数据库时,程序会创建一个名为`data`的表来存储数据。


最后,您可以根据需要修改URL和保存数据的文件路径或数据库文件路径来爬取不同网页的数据并保存。


#### 4. 动态网页爬取


使用Selenium库模拟浏览器操作,爬取动态网页中的数据。


首先,确保您已经安装了Selenium库和相应的WebDriver驱动程序(例如Chrome驱动程序)。可以使用以下命令安装Selenium库:



pip install selenium


然后,根据您使用的浏览器和操作系统,下载相应的WebDriver驱动程序,并将其放在一个可供Python访问的位置。


接下来,使用以下代码示例来爬取动态网页中的数据:



from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time

创建Chrome浏览器选项

options = Options()

设置无头模式,即不显示浏览器窗口

options.headless = True

指定Chrome驱动程序路径

driver_path = “path/to/chromedriver”

创建Chrome浏览器对象

driver = webdriver.Chrome(executable_path=driver_path, options=options)

打开网页

driver.get(“http://example.com”)

模拟执行JavaScript代码(例如,点击按钮、滚动页面等)

driver.execute_script(“window.scrollTo(0, document.body.scrollHeight);”)
time.sleep(2) # 等待2秒,以便页面加载完全

使用XPath定位元素并提取数据

elements = driver.find_elements(By.XPATH, “//div[@class=‘item’]”)
data = []
for item in elements:
title = item.find_element(By.XPATH, “./h2”).text.strip()
content = item.find_element(By.XPATH, “./p”).text.strip()
data.append({‘title’: title, ‘content’: content})

关闭浏览器

driver.quit()

打印爬取到的数据

for item in data:
print(item)


在上述示例中,我们使用Chrome浏览器和Chrome驱动程序来演示。您可以根据需要更改浏览器类型和驱动程序。


然后,我们创建了一个ChromeOptions对象,并将其配置为无头模式,即不显示浏览器窗口。


接下来,我们指定Chrome驱动程序的路径,并创建了一个WebDriver对象,即Chrome浏览器的实例。


然后,我们使用`get()`方法打开要爬取的网页。


接着,我们可以使用`execute_script()`方法模拟执行JavaScript代码,例如点击按钮、滚动页面等。这可以让网页加载动态内容。


然后,我们使用`find_elements()`方法和XPath定位元素,提取需要的数据。在示例中,我们提取了所有带有`class`属性为`item`的`div`元素,并从中提取标题和内容。


最后,我们关闭了浏览器,并打印出爬取到的数据。


您可以根据需要修改代码中的URL、XPath表达式和数据处理部分,以适应不同的动态网页和数据提取需求。


### 【四、注意事项】


#### 1. 网页的合法性


在爬取网页时,要确保自己的行为合法合规,尊重网站的规则和隐私权。


#### 2. 频率限制


为了避免对服务器造成过大的负担,爬虫程序应该设置适当的访问频率限制,避免过于频繁的请求。


#### 3. 反爬虫机制


一些网站会设置反爬虫机制,对爬虫程序进行限制。在爬取这些网站时,需要学习如何绕过反爬虫机制,避免被屏蔽。


#### 4. 数据处理和存储


爬取的数据可能会很庞大,需要学习如何进行数据处理和存储,以便后续的分析和使用。


### 【结语】


以上是Python爬虫的最全教程,包括基础知识、常用库和实例演示。通过学习这些内容,你将能够掌握Python爬虫的基本原理和技术,并能够编写自己的爬虫程序。在学习和使用爬虫的过程中,要遵守相关规则和道德标准,确保自己的行为合法合规。祝你在Python爬虫之旅中取得成功!





### 最后

> **🍅 硬核资料**:关注即可领取PPT模板、简历模板、行业经典书籍PDF。  
> **🍅 技术互助**:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。  
> **🍅 面试题库**:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。  
> **🍅 知识体系**:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)**
![img](https://img-blog.csdnimg.cn/img_convert/1987dfccccf63226d8d98b84fb75b0dd.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。  
> **🍅 面试题库**:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。  
> **🍅 知识体系**:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)**
[外链图片转存中...(img-p8aX8SWE-1713373021708)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值