网页爬虫抓取百度图片(爬虫的爬取步骤:具体的步骤-爬虫知乎图片 )
优采云 发布时间: 2022-02-04 10:11网页爬虫抓取百度图片(爬虫的爬取步骤:具体的步骤-爬虫知乎图片
)
爬虫的爬取步骤:具体步骤:代码示例:
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
}
#获取随机ip
proxies = get_random_ip(ip_list)
req = requests.get(url=url,headers=headers,proxies=proxies)
soup = BeautifulSoup(req.text,'lxml')
targets_url_1 = soup.find('figure')
targets_url = soup.find_all('noscript')
复制代码
完整代码:
这是一个爬取知乎图片的教程代码,涉及到代理ip文件(IP.txt)
import requests,random,os,time
from bs4 import BeautifulSoup
from urllib.request import urlretrieve
#获取IP列表并检验IP的有效性
def get_ip_list():
f=open('IP.txt','r')
ip_list=f.readlines()
f.close()
return ip_list
#从IP列表中获取随机IP
def get_random_ip(ip_list):
proxy_ip = random.choice(ip_list)
proxy_ip=proxy_ip.strip('\n')
proxies = {'https': proxy_ip}
return proxies
def get_picture(url,ip_list):
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
}
#获取随机ip
proxies = get_random_ip(ip_list)
req = requests.get(url=url,headers=headers,proxies=proxies)
soup = BeautifulSoup(req.text,'lxml')
targets_url_1 = soup.find('figure')
targets_url = soup.find_all('noscript')
#保存图片链接
list_url = []
for each in targets_url:
list_url.append(each.img.get('src'))
for each_img in list_url:
#判断文件夹(图库)是否存在,若不存在则创建文件夹
if '图库' not in os.listdir():
os.makedirs('图库')
#下载图片
proxies = get_random_ip(ip_list)
picture = '%s.jpg' % time.time()
req = requests.get(url=each_img,headers=headers,proxies=proxies)
with open('图库/{}.jpg'.format(picture),'wb') as f:
f.write(req.content)
#每爬取一张图片暂停一秒防止ip被封
time.sleep(1)
print('{}下载完成!'.format(picture))
def main():
ip_list = get_ip_list()
url = 'https://www.zhihu.com/question/22918070'
get_picture(url,ip_list)
if __name__ == '__main__':
main()
复制代码
成功后截图:
爬行动物简介:
网络爬虫,也称为网络蜘蛛,是一种用于自动浏览万维网的网络机器人。Web 爬虫从称为*敏*感*词*的统一资源地址 (URL) 列表开始。当网络爬虫访问这些统一的资源定位器时,它们会识别页面上的所有超链接,并将它们写入一个“访问列表”,即所谓的爬取域。此域上的 URL 将根据一组策略以循环方式访问。如果爬虫在执行过程中复制存档上的信息并保存网站,这些存档通常会被存储起来,以便于查看。阅读和浏览他们存储在 网站 上的信息并立即更新。这些存储的网页也称为“快照”。较大的网页意味着网络爬虫在给定时间内只能下载网页的较小部分,因此优先下载。高变化率意味着页面可能已被更新或替换。一些服务器端软件生成的 URL(统一资源定位器)也使网络爬虫难以避免检索重复的内容。(来自:维基百科)
通过代码访问网页并将页面内容保存在本地。url是爬虫识别网页的重要标识。通过requests.get(url)获取网页的HTML代码,通过BeautifulSoup解析HTML文件得到我们需要的内容。find()/find_all() 是 beautifulSoup 的两个重要方法。
补充知识点:
关于爬虫中的headers:在使用python爬虫爬取数据时,我们经常会遇到一些网站的反爬虫措施,一般都是针对headers中的User-Agent。如果不设置headers,User-Agent会声明它是python脚本,如果网站有反爬虫的想法,必然会拒绝这样的连接。通过修改headers,可以将自己的爬虫脚本伪装成浏览器的正常访问来避免这个问题。
关于爬虫中的IP/代理: 设置好用户代理后,应该考虑另一个问题。程序的运行速度非常快。如果我们使用爬虫程序来爬取网站中的东西,一个固定IP的访问频率会很高,不符合人工操作的标准,因为人工操作不可能在内部进行如此频繁的访问几毫秒。所以有些网站会设置IP访问频率的阈值。如果某个IP的访问频率超过了这个阈值,则说明这不是人在访问,而是爬虫。因此,当我们需要爬取大量数据时,一个不断变化的IP机制是必不可少的。我的代码中的 IP.txt 文件就是为此机制准备的。
关于 BeautifulSoup: 简单来说,Beautiful Soup 是一个 Python 库,其主要功能是从网页中抓取数据。
BeautifulSoup 的安装:
pip install beautifulsoup4
复制代码