jpgs = re.findall(jpgReghtml.decode('utf-8'))
i=0
for jpgurl in jpgs:
urllib.request.urlretrieve(jpgurl\"pic/\"+str(i)+\".jpg\")
i=i+1
二、复杂类型:网页完整内容是动态生成的
在实际爬取的过程 , 会碰到上面的爬取方法失效的情况 。 因为有些网站的内容是用JS脚本动态生成的 , 这时候获取的网页源码中并不包含动态生成的内容 。 以某个英语学习网为例 , 网页源代码中并不明显包含网页的内容 。
这时候就需要祭出Selenium了 , Selenium是一个用于测试网站的自动化测试工具 , 支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器 , 同时也支持phantomJS无界面浏览器 。 简单的说就是Selenium可以模拟访问网页 , 并获得最终的结果 。 使用Selenium之前还要安装有一个webdriver驱动文件 , 下载好Chrome驱动文件chromedrive.exe后 , 可以直接放在谷歌浏览器的安装目录下 。
C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\Application
下载的时候 , 一定要下载自己谷歌浏览器的对应版本 。 下载地址如下:
这时候爬取的思路就要进行调整:
1、利用Selenium访问网页 , 获得动态生成的网页源代码(安装后 , Python源码要关闭重新打开才能生效 , 本人的教训)
2、在源代码中找到需要的内容的格式并解析 , 然后下载 。
这里边涉及到一个小技能 , 如何查看动态网页的源码:方法就是右键里的检查功能 。
选中右边的Elements标签页 , 就可以看到网页的全部真实源代码 。
鼠标在右边的代码上移动 , 左边就会选中对应的内容块 , 非常直观 。
找到自己需要的内容块后 , 展开右边的代码 。
调整后的源码如下:
执行过程出现一个黑色的窗口就表示成功调用
爬取的部分内容列表截图 , 这个地址前要加上网站的前缀拼成完整的地址 , 进行二次爬取 。
源码:开头的#要去掉 , 不然程序出错 。 不加上我就违规了
#import urllib.request
#import re
import time #sleep()函数
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
url=\"不能加的\" #网址
#page=urllib.request.urlopen(url) #获取网页
#html=page.read() #获取网页源码
contents=[
#保存获取的音乐地址列表
#初始化webdriver
global driver
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver_path = 'chromedriver.exe' #这里放的就是下载的driver本地路径
driver = webdriver.Chrome(chrome_options=chrome_options executable_path = driver_path)
driver.get(url) #打开网址
#等待4秒钟 , 视网速和网页内容而定
time.sleep(4)
html = driver.page_source # 获取获取网页源码
#设置正则表达式规则 , 并解析
mp3Reg = re.compile(r' href=https://mparticle.uc.cn/"(.+?)\" class=') # 注:参看上面的截个图
contents.extend(re.findall(mp3Reghtml.encode(\"utf-8\").decode('utf-8')))
for mp3url in contents:
print(mp3url) #这里只是简单打印 , 实际还要再解析一次获得mp3真实地址
# 关掉driver
driver.quit()
后记:以上就是Python爬取网页内容二种方法 , 不足之处欢迎留言讨论交流 。
【Chrome|Python爬虫实例|爬取动态生成的网页内容】码字不易 , 您的关注、转发、收藏都会给我无限动力!
- Python|99元换新120W氮化镓遭爆抢!iQOO网页后台都崩了
- Python|2022年空调业三雄争霸, 战火在线上线下全面点燃
- Python|大厂高薪惯坏了年轻人?为啥大厂的年轻人越来越被公司要不起?
- Python|就差不能对着电脑生孩子了,Python的PyAutoGUI让你连鼠键都敢省了
- Python|镰刀发布Big Shuriken 3 Rev B散热器,采用新款散热风扇
- Java|【python学习笔记】Python find()方法
- Python|再忍忍,五款新机已经在路上,眼光或许可以放长一些!
- Java|【python学习笔记】Python expandtabs()方法
- Python|【python学习笔记】Python index()方法
- Python双端队列实现回文检测代码示例