java抓取网页内容(淘女郎的信息和照片需要额外安装的第三方库模块功能原理)
优采云 发布时间: 2022-01-03 02:07java抓取网页内容(淘女郎的信息和照片需要额外安装的第三方库模块功能原理)
淘女孩爬虫,可以动态抓取淘女孩的信息和照片
需要额外安装的第三方库模块的功能原理
淘女孩的网站使用了AJAX技术。通过在后台与服务器交换少量数据,AJAX 可以使网页异步更新。这意味着可以在不重新加载整个网页的情况下更新网页的某些部分。这意味着直接爬取网页源代码然后分析信息的方法是不可行的,因为网站是动态加载的,而直接爬取的方法只能抓取网页的原创源代码,但不是网页的原创源代码。给淘女孩动态加载的信息。
对于这种网站,一般有两种获取方式:
利用selenium库模拟浏览器的用户行为,使服务器认为真实用户在浏览网页,从而获取网页的完整源代码。使用Chrome等浏览器自带的分析工具来监控网页的网络。分析数据交换API,然后利用API抓取数据交换的JSON数据,再抓取。
一般来说,第一种方法速度较慢,运行时占用系统资源较多。因此,在条件允许的情况下,尽量使用第二种方法。
在 Chrome 浏览器中打开淘女孩主页,按 F12 切换到开发者模式。在网络列中选择 XHR 以查看当前没有网络活动。但是,当你在网页中点击一个页面时,会有一个POST活动,当再次按下下一页时,活动会再次出现,所以可以断定这个API是用于数据交换的。然后我们再次比较这两个请求。在Headers框的FromData列中,可以看到两次请求的区别在currentPage。一个是2,另一个是3。这说明如果要获取第一页的数据,这个currentPage的值是多少。于是我们根据这个来写请求,得到所有淘女孩信息的JSON文件。
发送请求,获取JSON数据,处理后转换成Python字典类型返回
连接MongoDB并保存信息
def main():
client = MongoClient()
db = client.TaoBao
col = db.TaoLady
for pageNum in range(1,411): # 淘女郎一共有410页,所以我们抓取从1到411页的内容。
print(pageNum)
datas = getInfo(pageNum)
if datas:
col.insert_many(datas)
if __name__ == '__main__':
main()
提取图片的网址,下载后保存在pic文件夹中
def downPic():
client = MongoClient()
db = client.TaoBao
col = db.TaoLady
for data in col.find():
name = data['realName']
url = "http:" + data['avatarUrl']
pic = urlopen(url)
with open("pic/" + name + ".jpg", "vb") as file:
print(name)
file.vrite(pic.read())
if __name__ == '__main__':
downPic()
攀登结束,成绩斐然
好的! 文章 在这里分享给大家。如果你和我一样喜欢python,在python学习的路上奔跑,欢迎加入python学习群:839383765 群里每天都会分享最新的行业资讯,分享python是免费课程,一起交流学习,让学习成为一种习惯!