python网络爬虫爬取汽车之家的最新资讯和照片

实现的功能是爬取汽车之家的最新资讯的链接
题目和文章中的照片
爬虫需要用到我们使用了 requests 做网络请求,拿到网页数据再用 BeautifulSoup 进行解析
首先先检查是否安装了pip,如果已经安装了pip,直接pip install requests,pip uninstall BeautifulSoup,安装成功就可以爬取数据了,以下就是要爬的内容
python网络爬虫爬取汽车之家的最新资讯和照片_第1张图片

python网络爬虫爬取汽车之家的最新资讯和照片_第2张图片
这是网页的源代码,就是通过找标签或者属性来爬取特定的内容
python网络爬虫爬取汽车之家的最新资讯和照片_第3张图片
代码如下
import requests
import uuid
from bs4 import BeautifulSoup
response = requests.get(url= ‘https://www.autohome.com.cn/all/#pvareaid=3311229’)
‘’‘解决乱码问题,以什么样的方式编码就以什么样的方式解码’’’
response.encoding = response.apparent_encoding
‘’‘将网页的内容转换成文本打印’’’
#print(response.text)
‘’‘文本转换成对象,以什么方式进行转换’’’
soup = BeautifulSoup(response.text,features=‘html.parser’)#内置的转换方式#html.parser
target = soup.find(id = ‘auto-channel-lazyload-article’)#根据属性找
#print(target)
li_list = target.find_all(‘li’)#根据标签找,返回的是列表类型,不是beautiflsop的对象没有find函数
#print(li_list),i = li_list[0],是beautifulsoup的对象可以find
for i in li_list:
a = i.find(‘a’)
if a:
print(a.attrs.get(‘href’))#attrs表示找到a标签的所有属性,返回的是字典属性,
# 意思就是a标签中找到所有属性中的href的属性
txt = a.find(‘h3’).text#不加.txt其实是对象,加了就是字符串
print(txt)
img_url = a.find(‘img’).attrs.get(‘src’)
img_url = ‘http:’+img_url
print(img_url)
img_response = requests.get(img_url)
file_name = str(uuid.uuid4()) + ‘.jpg’#随机生成文件的名字也就是数字
with open(file_name,‘wb’) as f:
f.write(img_response.content)#content返回的是字节类型’’’

需要注意的问题就是 img_url = a.find(‘img’).attrs.get(‘src’)返回的是一个链接//www3.autoimg.cn/newsdfs/g29/M04/89/46/120x90_0_autohomecar__ChsEflwA9DWAQiYQAAFbz6MSQTo254.jpg但是直接访问是不行的,所以要给加上http:变成一个可访问的链接地址,然后再去保存图片

另外还需要注意的是:requests可能会自动给地址添加%0A,导致不能访问
但是requests.get( ‘https://www.autohome.com.cn/all/#pvareaid=3311229’)
是正常的
url = ‘https://www.autohome.com.cn/all/#pvareaid=3311229’
requests.get(url)是不正常的无法访问
所以‘%0A’并不是被访问的网站加的,而是requets干的,%0A是十六进制的换行,即’\n’,所以需要去掉换行,可将requrl按行分裂,因为是一个列表所以可以取第一部分:res=requests.get(url.split(’\n’)[0])
以下是结果,爬取成功

python网络爬虫爬取汽车之家的最新资讯和照片_第4张图片python网络爬虫爬取汽车之家的最新资讯和照片_第5张图片

你可能感兴趣的:(爬虫)