python3爬虫基础学习

本文分享了使用Python和R语言爬取知乎上的美图的简单教程,通过修改源代码使其能够正常运行,并介绍了如何利用Python标准库urllib的urlretrieve方法下载图片,同时还提供了显示下载进度的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在知乎上看到别人写的python爬虫,链接:同时用R语言和Python爬取知乎美图,学习一下,源代码执行不成功,稍微修改了一下,很简单,代码如下:

import requests
from bs4 import BeautifulSoup
import os
import re
import urllib

url="https://www.zhihu.com/question/35931586/answer/206258333"
header={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'}
page=requests.get(url,headers=header)
soup=BeautifulSoup(page.text,'lxml')
link_list=soup.find_all("img",class_="origin_image zh-lightbox-thumb lazy")
os.makedirs("./Image/zhihu/")
os.chdir('./Image/zhihu/')
for link in link_list:
    mylink=link.get('data-original')
    name=re.findall(r"v2-.*?\.jpg",mylink)[0]
    urllib.request.urlretrieve(mylink,name)

学习笔记:urlretrieve(url,filename=null,reportbook=null,data=null)方法,将远程数据下载到本地,参数说明:
url:外部或者本地url
filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);
reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。
data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。
改成如下代码能看到每张图片的存储进度:

import requests
from bs4 import BeautifulSoup
import os
import re
import urllib

def callbackfunc(blocknum,blocksize,totalsize):
    '''
    @blocknum: 已经下载的数据块
    @blocksize: 数据块的大小
    @totalsize: 远程文件的数据块
    '''
    percent=100.0*blocknum*blocksize/totalsize
    if percent>100:
        percent=100
    print("%.2f%%" %percent)

url="https://www.zhihu.com/question/35931586/answer/206258333"
header={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'}
page=requests.get(url,headers=header)
soup=BeautifulSoup(page.text,'lxml')
link_list=soup.find_all("img",class_="origin_image zh-lightbox-thumb lazy")
os.makedirs("./Image/zhihu/")
os.chdir('./Image/zhihu/')
for link in link_list:
    mylink=link.get('data-original')
    name=re.findall(r"v2-.*?\.jpg",mylink)[0]
    urllib.request.urlretrieve(mylink,name,callbackfunc)

另外推荐学习资料:
Beautiful Soup 4.2.0 文档
用Python3开发爬虫

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值