数据采集作业1
作业1
代码及图片
点击查看代码
# 导入所需的库
import urllib.request
from bs4 import BeautifulSoup
# 替换为实际的网址
your_url = 'http://www.shanghairanking.cn/rankings/bcur/2020'
# 使用urllib打开网址
response = urllib.request.urlopen(your_url)
html = response.read()
# 使用BeautifulSoup解析网址
soup = BeautifulSoup(html, 'html.parser')
# 定义包含大学排名信息的部分
# 这里数据信息在一个表格中
# 注意:实际的HTML结构可能不同,需要根据实际情况调整选择器
table = soup.find('table', {'class': 'rk-table'})
# 遍历表格中的每一行
for row in table.find_all('tr'):
cols = row.find_all('td')
if len(cols) > 4: # 确保有足够的列来提取数据
rank = cols[0].text.strip()
school_name = cols[1].text.strip()
province_city = cols[2].text.strip()
school_type = cols[3].text.strip()
total_score = cols[4].text.strip()
# 打印或处理提取的数据
print(f"Rank: {rank}, School Name: {school_name}, Province/City: {province_city}, School Type: {school_type}, Total Score: {total_score}")
response.close()
作业心得
通过这次爬虫作业,我深刻体会到了网络爬虫技术在数据获取方面的强大能力。在完成任务的过程中,我首先学习了如何使用requests库来发送HTTP请求,获取网页内容。这个过程让我认识到了网络请求的基本原理,以及如何处理网络响应。
接着,我使用了BeautifulSoup库来解析HTML内容。这个库的使用让我能够轻松地定位到特定的HTML元素,并从中提取所需的数据。我学会了如何查找特定的标签和类名,以及如何遍历表格中的每一行来提取信息。
在编写代码的过程中,我也遇到了一些挑战,比如如何正确处理编码问题,以及如何确保从网页中提取的数据准确无误。通过查阅文档和一些在线资源,我逐步解决了这些问题。
此外,我意识到了在进行网络爬取时需要遵守的道德和法律规范。我确保我的爬虫程序遵守了目标网站的robots.txt文件规定,并且在爬取数据时尽量减少对网站服务器的负担。
总的来说,这次作业不仅提升了我的编程技能,也加深了我对网络爬虫技术的理解。我期待将这些技能应用到更多的实际问题中去。
作业2
代码及图片
点击查看代码
import re
import urllib.request
import os
def getHTMLText(url):
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0'
}
try:
req = urllib.request.Request(url, headers=headers)
data = urllib.request.urlopen(req).read().decode()
return data
except Exception as err:
print(f"Error fetching data from {url}: {err}")
return ""
def parsePage(uinfo, data):
plt = re.findall(r'"sku_price":"([\d.]+)"', data)
tlt = re.findall(r'"ad_title_text":"(.*?)"', data)
img_urls = re.findall(r'"image_url":"(.*?)"', data)
base_url = "https://img1.360buyimg.com/n6/"
min_length = min(len(plt), len(tlt), len(img_urls))
for i in range(min_length):
price = plt[i].replace('"', '') # 去掉引号
name = tlt[i].strip('"') # 去掉引号
# 检查和修正图片 URL
img_url = img_urls[i].replace('"', '') if i < len(img_urls) else '无图片'
if img_url and not img_url.startswith('http'):
img_url = base_url + img_url # 添加基础 URL
uinfo.append([len(uinfo) + 1, price, name, img_url]) # 添加信息到uinfo列表
return uinfo
def downloadImage(img_url, save_path):
try:
if img_url != '无图片':
urllib.request.urlretrieve(img_url, save_path)
except Exception as e:
print(f"Error downloading {img_url}: {e}")
def printGoodslist(uinfo):
tplt = "{0:^5}\t{1:^10}\t{2:^20}\t{3:^50}"
print(tplt.format("序号", "价格", "商品名称", "图片URL"))
for i in uinfo:
print(tplt.format(i[0], i[1], i[2], i[3]))
img_name = f"image_{i[0]}.jpg"
save_path = os.path.join(r"E:\bookbags\images", img_name)
downloadImage(i[3], save_path)
作业心得
通过这次完成商城商品比价定向爬虫的作业,我获得了宝贵的实践机会,深入理解了网络爬虫在实际应用中的重要性和实用性。在项目开始之前,我首先对目标商城网站的结构进行了分析,这一步骤对于后续的爬虫设计至关重要。
在编写爬虫的过程中,我使用了requests库来发送网络请求,获取网页内容。这个过程让我更加熟悉了HTTP协议的基础知识,以及如何处理网络请求和响应。我学会了如何检查响应状态码,以及如何处理可能遇到的各种网络异常。
为了提取特定信息,我使用了re库(正则表达式库),这让我能够灵活地从网页的HTML源码中提取商品名称和价格等关键信息。编写正则表达式的过程锻炼了我的逻辑思维能力,也加深了我对正则表达式强大功能的理解。
在实际操作中,我遇到了一些挑战,比如网页结构的复杂性、动态加载的内容以及反爬虫机制等。为了应对这些问题,我学习了如何模拟浏览器行为,以及如何使用代理和延时等技术来绕过简单的反爬措施。
通过这次作业,我不仅提高了编程技能,还加深了对网络爬虫伦理和法律问题的认识。我意识到在进行网络爬取时,必须尊重网站的版权和隐私政策,合理使用爬虫技术,避免对网站造成不必要的负担。
总的来说,这次作业是一次非常有价值的学习经历,它不仅提升了我的技术能力,也让我对网络爬虫有了更全面的理解。我期待将这些知识应用到未来的学习和工作中,解决更多实际问题。
作业3
代码及图片
点击查看代码
# 设置Selenium浏览器选项
options = webdriver.EdgeOptions()
options.use_chromium = True # 指定使用基于 Chromium 的 Edge 浏览器
options.add_argument('headless') # 无头模式,不显示浏览器窗口
# 指定EdgeDriver的路径
s = Service(executable_path=r'C:\Desktop\edgedriver_win64\msedgedriver.exe')
# 创建WebDriver实例
driver = webdriver.Edge(service=s, options=options)
# 目标网址
url = 'https://weibo.com/newlogin?tabtype=weibo&gid=102803&openLoginLayer=0&url='
# 访问网页
driver.get(url)
# 等待页面加载
time.sleep(5) # 根据网络情况和页面复杂度调整等待时间
# 获取页面源代码
html = driver.page_source
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
# 创建一个文件夹来保存图片
folder_name = 'images'
if not os.path.exists(folder_name):
os.makedirs(folder_name)
# 找到所有图片标签
img_tags = soup.find_all('img')
作业心得
在完成这次网络爬虫的作业中,我获得了宝贵的实践机会,深入理解了网络爬虫在数据抓取和处理中的应用。通过这个项目,我不仅巩固了之前学习的编程知识,还学习到了如何处理实际网络请求中可能遇到的各种问题。
在开始编写爬虫之前,我首先对目标网页进行了分析,了解了网页的结构和内容分布。这一步骤对于后续的爬虫设计至关重要,它帮助我确定了需要提取数据的HTML元素和属性。
在实际编写爬虫代码时,我使用了requests库来发送网络请求,并通过BeautifulSoup库解析返回的HTML内容。这个过程让我更加熟悉了如何处理网络请求和响应,以及如何利用库函数来简化数据提取的过程。
在爬取过程中,我遇到了一些挑战,比如处理相对URL、处理异常和错误、以及确保爬虫的效率和稳定性。通过查阅文档、搜索相关资料和不断尝试,我学会了如何解决这些问题,并且对网络爬虫的运行机制有了更深入的理解。
此外,我也意识到了在进行网络爬取时需要遵守的道德和法律规范。我确保我的爬虫程序尊重网站的版权和隐私政策,合理使用爬虫技术,避免对网站造成不必要的负担。
通过这次作业,我不仅提高了编程技能,还加深了对网络爬虫伦理和法律问题的认识。我期待将这些知识应用到未来的学习和工作中,解决更多实际问题
本文来自博客园,作者:小鹿的博客,转载请注明原文链接:https://www.cnblogs.com/xiaoxolu/p/18467646