网页爬虫抓取百度图片(爬虫的爬取步骤:具体的步骤-爬虫知乎图片 )

优采云 发布时间: 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

复制代码

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线