赞
踩
汽车之家网址:https://www.autohome.com.cn/news/
使用的模块:requests 、BeautifulSoup
这就是我们要爬取的信息
按F12审查一下元素:找到了对应的信息。而且发现要爬取的图片都在id=auto-channel-lazyload-article的div标签下的li标签里。
li标签下的a标签就是新闻的url;image标签,src就是获取图片的url;
请求图片地址,将获取到的内容写成二进制文件,保存下来。
这就是完整的思路,接下来看一下代码:
import requests
from bs4 import BeautifulSoup
url='https://www.autohome.com.cn/news/'
response=requests.get(url)
response.encoding=response.apparent_encoding
soup=BeautifulSoup(response.text,'html.parser')
target = soup.find(id='auto-channel-lazyload-article')
li_list=target.find_all('li')
for i in li_list:
a=i.find('a')
if a:
print(a.attrs.get('href'))
txt=a.find('h3').text
print(txt)
img = a.find('img').attrs.get('src')
print(img)
img_response=requests.get(url='http:'+img)
import uuid#用来生成唯一识别码的。具有多种算法
file_name=str(uuid.uuid4())+'.jpg'
with open(file_name,'wb')as f:
f.write(img_response.content)
这里用到了uuid模块,是用来生成唯一识别码的。具有多种算法。
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。另外我们也可以在e2fsprogs包中的UUID库找到实现。
python中的uuid模块
uuid模块在Python 2.5以后引入,接口包括:不可变对象UUID(UUID类)和函数uuid1()、uuid3()、uuid4()和uuid5(),后面的四个函数用于生成 RFC 4122 规范中指定的第1、3、4、5版UUID。使用uuid1()或uuid4()可以获得一个唯一的ID,uuid1()包含了主机的网络名称,uuid4()不涉及网络主机名,仅生成一个随机UUID,因此从隐私保护角度uuid4()更加安全。
此文代码中使用的就是uuid4()。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。