java抓取网页内容(淘女郎的信息和照片需要额外安装的第三方库模块功能原理)

优采云 发布时间: 2022-01-03 02:07

  java抓取网页内容(淘女郎的信息和照片需要额外安装的第三方库模块功能原理)

  淘女孩爬虫,可以动态抓取淘女孩的信息和照片

  

  需要额外安装的第三方库模块的功能原理

  淘女孩的网站使用了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是免费课程,一起交流学习,让学习成为一种习惯!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线