httpclient 抓取网页(想用的使用参考Java11新特性之HttpClient_java_之家之家)

优采云 发布时间: 2022-03-28 03:08

  httpclient 抓取网页(想用的使用参考Java11新特性之HttpClient_java_之家之家)

  从必应主页抓取他的日常照片

  上学的时候用python写了一个小工具,每天抓一张bing的图片。

  现在想用java来重构。

  抓取图片的想法

  首先获取网页的源代码

  

  从网页源代码中,我们可以找到图片的下载链接和图片的描述信息。

  使用下载链接获取对应图片。

  使用 python 抓取

  我们使用python中的requests库来获取网页的源代码,然后使用正则表达式从网页的源代码中搜索图片的下载链接。

  res = requests.get(url) #获取网页源码,并利用正则表达式找到与bing每日一图有关的参数

pattern = re.compile(r"(\/th\?id=(.+?)\.jpg)")

# pattern = re.compile(r"\/th\?id=(.+)(\.jpg)")

result = pattern.search(res.text) #从源码中获取bing大图的图片链接

imgLinkParam = result.group(0).split("&")

imgDownloadUrl = url+"&".join(imgLinkParam)

  得到图片的下载地址后,还需要从网页中找到图片的标题。

  这里我们使用 BeautifulSoup 库来解析网页。

  

  查找所有class="title"的a节点,取a的第一个节点,其内容为图片的标题。

  soup = BeautifulSoup(res.text,'lxml') #使用bs4来解析对应的html文件

#print(soup)

# imageInfo = soup.find_all(name="a",attrs={"id":"sh_cp","class":"sc_light"})

imageInfo = soup.find_all(name="a", attrs={"class":"title"})

imageDescription=imageInfo[0].contents[0] #获取对图片的描述

  最后我们根据图片链接下载图片到本地

  pictureData = requests.get(imgDownloadUrl) #根据下载链接获取图片数据

with open(imgName,"wb") as f:

f.write(pictureData.content)

f.flush()

log_write(logName,"图片保存成功")

  如何使用java重构代码

  思路和之前python的实现大致相同,先获取bing首页的html内容,然后解析html得到需要的内容。然后下载图片

  首先需要构造一个http请求,根据链接发送请求并下载图片文件。这里我们使用java 11自带的HttpClient来发送http请求。

  HttpClient的使用参考Java11的新特性,HttpClient小测试knife_java_Script Home()

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线