import urllib.request
from lxml import etree
#https://sc.chinaz.com/tupian/meinvtupian.html
#https://sc.chinaz.com/tupian/meinvtupian_2.html
def creat_request(page):
if(page == 1):
url = 'https://sc.chinaz.com/tupian/meinvtupian.html'
else:
url = 'https://sc.chinaz.com/tupian/meinvtupian_'+str(page)+'.html'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}
request = urllib.request.Request(url=url, headers=headers)
print(url)
return request
def get_content(request):
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
return content
def down_load(content):
# 下载图片
#urllib.request.urlretrieve('图片地址','文件名字')
tree = etree.HTML(content)
name_list = tree.xpath('//div[@class="item masonry-brick"]/img/@alt')
#设计图片的网站会进行懒加载
src_list = tree.xpath('//div[@class="item masonry-brick"]/img/@src2')
for i in range(len(name_list)):
name = name_list[i]
src = src_list[i]
url = 'https:'+src
print(name,url)
urllib.request.urlretrieve(url=url, filename=name+'.jpg')
if __name__ == '__main__':
start_page = int(input("起始页码"))
end_page = int(input("结束页码"))
for page in range(start_page,end_page+1):
#请求对象的定制
request = creat_request(page)
#获取源码
content = get_content(request)
#下载
down_load(content)
Python爬虫xpath是正确的但是不起作用
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
import requests from bs4 import BeautifulSoup import os def download_images(url, folder): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') img_tags = soup.find_all('img') for img in img_tags: img_url = img['src'] img_name = img['alt'] full_img_url = 'https:' + img_url img_data = requests.get(full_img_url).content with open(os.path.join(folder, img_name + '.jpg'), 'wb') as f: f.write(img_data) if __name__ == '__main__': start_page = int(input("起始页码")) end_page = int(input("结束页码")) folder_name = input("请输入文件夹名称:") if not os.path.exists(folder_name): os.makedirs(folder_name) for page in range(start_page, end_page + 1): if page == 1: url = 'https://sc.chinaz.com/tupian/meinvtupian.html' else: url = f'https://sc.chinaz.com/tupian/meinvtupian_{page}.html' download_images(url, folder_name)
通过上述代码,我对你的Python代码进行了修改,首先使用requests库和BeautifulSoup库替代了urllib库和lxml库,因为这两个库在处理网页爬取和解析的时候更加方便和有效。接着通过对每个图片的src和alt属性进行解析,将图片下载到指定的文件夹中。最后,通过输入起始页码、结束页码和文件夹名称,运行爬虫并下载图片。
希望我的回答能够解决你的问题,如果还有其他疑问,欢迎继续提问。
【相关推荐】
- 你可以看下这个问题的回答https://ask.csdn.net/questions/862249
- 这篇博客你也可以参考下:【Python 爬虫】XPath的简单使用
- 您还可以看一下 李飞老师的Python数据分析与爬虫课程中的 Python爬虫:XPath常见用法小节, 巩固相关知识点
- 除此之外, 这篇博客: Python爬虫2.2 — xpath用法教程中的 选取未知节点 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境
- ¥30 关于#java#的问题,请各位专家解答!
- ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
- ¥20 pcf8563时钟芯片不启振