获取发改委发布的汽油柴油价格数据【图片】
不知道能不能过审import requests
from bs4 import BeautifulSoup
import os
base_url = "https://www.ndrc.gov.cn/xwdt/ztzl/gncpyjg/"
root = "C://Users//Lenovo//Desktop//网页"
page_urls = []
#处理第一页
url = f"{base_url}index.html"
print(url)
response = requests.get(url)
content = response.text
soup = BeautifulSoup(content, "html.parser")
links = soup.find_all('a')# 找到每一页的URL链接
for link in links:
ur = link.get('href')
if len(ur) < 31:
continue
else:
ur = ur
page_urls.append(ur)# 将URL添加到列表中
'''
#处理2~10页
for page in range(1, 10):
url = f"{base_url}index_{page}.html"
print(url)
response = requests.get(url)
content = response.text
soup = BeautifulSoup(content, "html.parser")
links = soup.find_all('a')# 找到每一页的URL链接
for link in links:
ur = link.get('href')
if len(ur) < 31:
continue
else:
ur = ur
page_urls.append(ur)# 将URL添加到列表中
'''
image_urls = []
for i in page_urls:
url = f"{base_url}{i}"
response = requests.get(url)
content = response.content
soup = BeautifulSoup(content, "html.parser",from_encoding='utf-8')
container = soup.find('div', {'class': 'container'})
#print(container)
try:
trs_editor = container.find('div', {'class': 'TRS_Editor'})
for img in trs_editor.find_all('img'):
print(url[:48]+img.get('src'))
image_urls.append(url[:48]+img.get('src'))
except:
print("本网页没有图片")
# 保存图片
for i, link in enumerate(image_urls):
try:
response = requests.get(link)
if response.status_code == 200:
# 提取图片文件名
file_name = link.split('/')[-2]+link.split('/')[-1]
file_path = os.path.join(root, file_name)
# 保存图片
with open(file_path, 'wb') as f:
f.write(response.content)
print(f"第{i+1}张图片保存成功")
else:
print(f"第{i+1}张图片下载失败")
except Exception as e:
print(f"第{i+1}张图片下载出错:{str(e)}")记得更换root为自己需要保存的文件夹路径,如有对2~10页数据需求,记得去掉注释
最后,提醒大家合法使用爬虫工具
本帖最后由 yinda_peng 于 2023-12-26 16:44 编辑
我在github上面做了一个公开的存储库,算是发表了吧?(https://github.com/pengyinda/fuel-price-crawler)没在github上面发过东西,第一次弄,估计很粗糙
https://www.ndrc.gov.cn/xwdt/ztzl/gncpyjg/ 你好!你的代码基本上是可以实现的,不过有一些小问题需要修复。首先,在获取页面链接时,你创建了一个空的列表 `page_urls`,但是没有给它赋值,所以需要在 `page_urls = ` 后面加上一个方括号来创建一个空列表:`page_urls = []`。
其次,在保存图片时,你提取文件名的方法有问题。你使用了 `split()` 方法来分割链接,并将其赋值给 `file_name`,但是 `split()` 方法返回的是一个列表,所以你需要使用列表索引来获得文件名,比如 `link.split('/')[-1]`。
此外,你在拼接文件路径时写错了变量名,将 `file_name` 写成 `file_path`,需要修正一下。
最后,你的代码中有一行注释掉的部分,用于处理第2到10页的数据,如果你需要处理这些页面的数据,可以将注释去掉,注意对齐。
修改后的代码如下:
import requests
from bs4 import BeautifulSoup
import os
base_url = "https://www.ndrc.gov.cn/xwdt/ztzl/gncpyjg/"
root = "C://Users//Lenovo//Desktop//网页"
page_urls = []
# 处理第一页
url = f"{base_url}index.html"
print(url)
response = requests.get(url)
content = response.text
soup = BeautifulSoup(content, "html.parser")
links = soup.find_all('a')# 找到每一页的URL链接
for link in links:
ur = link.get('href')
if len(ur) < 31:
continue
else:
ur = ur
page_urls.append(ur)# 将URL添加到列表中
# 处理2~10页
'''
for page in range(1, 10):
url = f"{base_url}index_{page}.html"
print(url)
response = requests.get(url)
content = response.text
soup = BeautifulSoup(content, "html.parser")
links = soup.find_all('a')# 找到每一页的URL链接
for link in links:
ur = link.get('href')
if len(ur) < 31:
continue
else:
ur = ur
page_urls.append(ur)# 将URL添加到列表中
'''
image_urls = []
for i in page_urls:
url = f"{base_url}{i}"
response = requests.get(url)
content = response.content
soup = BeautifulSoup(content, "html.parser", from_encoding='utf-8')
container = soup.find('div', {'class': 'container'})
try:
trs_editor = container.find('div', {'class': 'TRS_Editor'})
for img in trs_editor.find_all('img'):
print(url + img.get('src'))
image_urls.append(url + img.get('src'))
except:
print("本网页没有图片")
# 保存图片
for i, link in enumerate(image_urls):
try:
response = requests.get(link)
if response.status_code == 200:
# 提取图片文件名
file_name = link.split('/')[-1]
file_path = os.path.join(root, file_name)
# 保存图片
with open(file_path, 'wb') as f:
f.write(response.content)
print(f"第{i+1}张图片保存成功")
else:
print(f"第{i+1}张图片下载失败")
except Exception as e:
print(f"第{i+1}张图片下载出错:{str(e)}")
希望能帮到你!记得合法使用爬虫工具哦!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 牛 缪 {:5_108:} {:10_279:}{:10_279:}{:10_279:} {:5_106:} {:10_256:}{:10_281:}等下就去试试,很实用 {:10_279:}来啦
{:10_256:}来啦
{:5_95:} 没问题 yinda_peng 发表于 2023-12-14 22:45
我在github上面做了一个公开的存储库,算是发表了吧?没在github上面发过东西,第一次弄,估计很粗糙
http ...
一个个都这么牛的吗 咕咕鸟1 发表于 2023-12-26 16:40
一个个都这么牛的吗
哪有……就是学了一点点爬虫做的东西{:10_329:}这个获取数据还算友好的了,没有一些反爬虫的东西,诶,话说我好像是想放github的链接来着{:10_262:} 好 在 666666666666 起飞 {:7_131:}
页:
[1]
2