抖音的用户信息页的网址有3种形式,分别是:
https://v.douyin.com/GW5S6D/
https://www.iesdouyin.com/share/user/88445518961?sec_uid=MS4wLjABAAAAWxLpO0Q437qGFpnEKBIIaU5-xOj2yAhH3MNJi-AUY04×tamp=1582709424&utm_source=copy&utm_campaign=client_share&utm_medium=android&share_app_name=douyin
https://www.douyin.com/share/user/88445518961
链接1是从客户端分享的短链接,在浏览器地址栏输入后重定向至链接2的形式。链接2和链接3很明显地把用户的UID显示出来,这个用户的UID为88445518961。
目标:抓取用户名、保存用户头像、UID、抖音ID、签名、关注数、粉丝数、赞数、作品数、喜欢数
0. 获取HTML
使用requests获得响应并利用BeautifulSoup来查找目标值,代码如下
import requests
from bs4 import BeautifulSoup as bs
def getHtml(url):
header = {"user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"}
#try: 不必处理异常
response = requests.get(url=url, headers=header)
return bs(response.text, 'lxml') # lxml需要安装,可以选用html.parser
#except: 不必处理异常
# print('网址错误')
# quit()
url = 'https://www.iesdouyin.com/share/user/88445518961?sec_uid=MS4wLjABAAAAWxLpO0Q437qGFpnEKBIIaU5-xOj2yAhH3MNJi-AUY04×tamp=1582709424&utm_source=copy&utm_campaign=client_share&utm_medium=android&share_app_name=douyin'
soup = getHtml(url)
1. 抓取用户名
只要查找class="nickname"属性的标签
,标签内的内容即用户名
nickname = soup.find(name='p', attrs={'class': 'nickname'}).string
2. 保存头像
红色框内src的属性值就是头像的下载链接。同样通过find函数查找class="avatar"的标签
里另一属性src的值,下载图像后,文件保存在avatar目录下,文件名为nickname.jpeg。定义一个保存头像的函数
import os</