爬取淘女郎模特图片与相关信息
-
(一)
解析淘女郎首页网站地址
- 打开淘女郎首页界面 https://www.taobao.com/markets/mm/mm2017,点击 查看更多,然后 F12 进入网页抓包工具,按 F5观察数据加载变化。审查元素发现,我们想找的图片的链接在网页的源代码里更本找不到,所以这个网页应该不是简单的静态网页。不然那那些妹子图不给我们轻易就得到了。。哈哈。不过不怕。我们进入 NETwork 里面看有没有动态加载的文件是我们想要的。
果然,仔细观察发现,里面加载的内容跟当前页面的人名及其他信息完全吻合。便可以肯定这就是我们要的数据。所以,查看request url获取相关url。https://mm.taobao.com/alive/list.do?scene=all&page=1
而后面的page=1 则就表示,第一页。只要我们把数值改变便可以加载到对应的页码。
个人觉得这个还算简单。所以直接上代码了:
import urllib.request
import re
from user_agent.base import generate_user_agent
class Spider:
# 定义需要爬取的页数
def __init__(self, page):
self.page = int(page)
# 获取要爬取的图片的页数
def get_pags(self, page):
for i in range(1, page+1):
url = "https://mm.taobao.com/alive/list.do?scene=all&page=%d"%i
yield url
# 定义常用的 URL 打开函数
def open_url(self, url):
user_agent = generate_user_agent()
header = {
"User-Agent":user_agent}
req = urllib.request.Request(url, headers=header)
response = urllib.request.urlopen(req).read() # 文件未进行decode解码,此时为response二进制文件
return response
# 定义获取图片名称的函数
def get_name(self, url):
response = self.open_url(url).decode('gbk').encode('utf-8').decode('utf-8')
name_list = re.compile('darenNick":"(.*?)"').findall(response)
return name_list
# 定义获取图片链接地址并返回图片内容
def get_picture(self, url):
response = self.open_url(url).decode('gbk').encode('utf-8').decode('utf-8')
link_list = re.compile('avatarUrl":"(.*?)"').findall(response)
for link in link_list:
if re.com