Python爬虫实战基础篇:随机目的地旅行小程序随机地址生成(附GUI版)Python爬虫实战基础:爬取水利建设市场监管平台的从业单位信息
要实现上述两个Python爬虫项目,需要了解Python编程基础、网络请求、网页解析以及一些常用库。以下是每个项目的基本实现方案:
项目1:随机目的地旅行小程序随机地址生成(附GUI版)
1. 准备工作
- Python基础知识
requests
库进行网页请求BeautifulSoup
库进行网页解析tkinter
库用于GUI开发
2. 插件安装
pip install requests beautifulsoup4
3. 编写爬虫程序
假设我们要从一个包含世界各地旅游景点的网站提取数据:
import requests
from bs4 import BeautifulSoup
import random
def get_travel_destinations():
url = 'http://example.com/travel/destinations'
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
# 假设景点在一个包含类名为'destination'的div中
destinations = [div.get_text() for div in soup.find_all(class_='destination')]
return destinations
else:
print("Failed to retrieve data")
return []
def get_random_destination():
destinations = get_travel_destinations()
if destinations:
return random.choice(destinations)
return "No destinations found"
print(get_random_destination())
4. 用tkinter创建简单的GUI
import tkinter as tk
def show_random_destination():
destination = get_random_destination()
label.config(text=destination)
root = tk.Tk()
root.title("Random Travel Destination")
label = tk.Label(root, text="Click the button to get a random travel destination")
label.pack(pady=20)
button = tk.Button(root, text="Get Destination", command=show_random_destination)
button.pack(pady=20)
root.mainloop()
项目2:爬取水利建设市场监管平台的从业单位信息
1. 准备工作
- 使用
requests
库抓取页面内容 - 使用
BeautifulSoup
解析HTML - 了解网站的反爬措施,可能需要设置User Agent等
2. 插件安装
已经在项目1中完成
3. 编写爬虫程序
import requests
from bs4 import BeautifulSoup
def get_company_info():
url = 'http://example.com/companies'
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)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
# 根据页面结构,定位到公司信息的标签
companies = soup.find_all('div', class_='company')
for company in companies:
name = company.find('h2').get_text() # 假设公司名称在h2标签中
address = company.find('p').get_text() # 假设公司地址在p标签中
print(f'Company: {name}, Address: {address}')
else:
print("Failed to retrieve data")
get_company_info()
注意事项
- 验证爬取的合法性,并遵守网站的robots.txt规定。
- 如果网站使用了反爬虫机制,可能需要使用动态解析工具,比如Selenium。
- 实际使用中需要根据具体网页结构修改爬虫代码。