300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python图片超链接_python自动获得网页上的所有超链接并全部截图

python图片超链接_python自动获得网页上的所有超链接并全部截图

时间:2021-05-13 22:57:09

相关推荐

python图片超链接_python自动获得网页上的所有超链接并全部截图

需要安装python的selenium模块,这是一个浏览器自动化的框架。然后我是使用chrome浏览器的,所以还需要安装一个chromedriver。还有一个爬虫框架bs4。

selenium和bs4直接用pip安装,在终端下执行:

pip install selenium

pip install Beautifulsoup4

chromedriver安装参考这个网址:

/technologylife/p/5829944.html

然后进入正文,总的流程就是解析网址的html,取出超链接逐个访问,然后截图到本地的文件夹里,目前实现的版本还没有分类,只是把图片全部存到一个文件夹里。

总的代码如下:

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

import requests

from bs4 import BeautifulSoup

import time

i=0 #目前暂时先用一个计数来表示图片的文件名

def getScreenShot(url):

'''

此函数用于根据url访问网页,并截图到本地文件夹

'''

global i #全局变量

chrome_options = Options()

chrome_options.add_argument('--headless')

chrome_options.add_argument('--disable-gpu') #设置浏览器参数

brower = webdriver.Chrome(chrome_options=chrome_options) #创建一个chrome的webdrive

brower.maximize_window() #设置全屏截图

js_height="return document.body.clientHeight"

picName = "/home/orange/视频/"+str(i)+".png" #指定保存文件的文件名

brower.get(url) #获取url

i+=1

try:

brower.get(url)

k=1

height=brower.execute_script(js_height)

#获取整张网页的截图,而不只是当前屏幕范围内的

while True:

if k*500

js_move="window.scrollTo(0,{})".format(k*500)

print(js_move)

brower.execute_script(js_move)

time.sleep(0.2)

height=brower.execute_script(js_height)

k+=1

else:

break

scroll_width = brower.execute_script('return document.body.parentNode.scrollWidth')

scroll_height = brower.execute_script('return document.body.parentNode.scrollHeight')

brower.set_window_size(scroll_width, scroll_height)

brower.get_screenshot_as_file(picName)

time.sleep(0.1)

except Exception as e:

print(picName,e)

brower.save_screenshot(picName) #保存截图

brower.close() #关闭webdriver

def getHTMLText(url):

'''

此函数用于获取网页的html文档

'''

try:

#获取服务器的响应内容,并设置最大请求时间为6秒

res = requests.get(url, timeout = 6)

#判断返回状态码是否为200

res.raise_for_status()

#设置该html文档可能的编码

res.encoding = res.apparent_encoding

#返回网页HTML代码

return res.text

except:

return '产生异常'

def main():

'''

主函数

'''

#目标网页,这个可以换成一个你想要的网站

url = '/huwt/'

demo = getHTMLText(url) #获取html代码

#解析HTML代码

soup = BeautifulSoup(demo, 'html.parser')

#模糊搜索HTML代码的所有包含href属性的标签

a_labels = soup.find_all('a', attrs={'href': True})

hash_set=set() #创建一个哈希表,避免对同一个网站重复截图,每当访问一个网站后,将网址加入到哈希表中,如果哈希表中已经有这个网址,则不再截图

#获取所有标签中的href对应的值,即超链接

for a in a_labels:

s=a.get('href')

if s not in hash_set: #如果这个超链接不在哈希表中

hash_set.add(s) #添加这超链接到哈希表

getScreenShot(s) #获取这个网站的截图

main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。