python爬虫入门

本文介绍了如何使用Selenium库来爬取动态加载的网页内容。通过模拟浏览器行为,如滚动页面,等待加载,抓取了动态加载的图片URL,并将其保存到本地。Selenium虽然效率较低,但能处理复杂交互,适用于需要模拟用户行为的场景。文章还提供了代码示例,展示了如何操作Chrome浏览器进行动态网页爬取。
摘要由CSDN通过智能技术生成

动态网页的爬取

有些网页的内容是动态加载的,这时候使用request去获得html文档会发现没有自己想要的内容。

介绍selenium:

一个可以模仿你使用浏览器的库,可以模仿一些人为的操作。比如输入账号,密码。滑动滚轮等。这里使用chrome做例子(也可以用其他浏览器)。

首先:你需要下载对应的浏览器和驱动器,chrome驱动器下载地址:http://npm.taobao.org/mirrors/chromedriver/

其次:你需要将下载的 chromedriver.exe 放到你的python同目录下,同时复制一份放在你的chrome浏览器的同目录下,并且配置好环境变量。

这里以某动态网页做例子:


from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import urllib.request
 
url = "https://www.huashi6.com/rank"                   # 该网页是一个动态网页,有很多图片,使用request拿不到图片的地址,因为图片是动态加载的,只有下滑才能显示出来
image_urls = []
c_options = Options()
# c_options.add_argument("-headless")                  # 该代码可使你的网页打开时自己看不到,不写该代码你会看见自动打开的网页
c_options.add_argument("-disable-gpu")
t_1 = webdriver.Chrome(options=c_options)              # 打开浏览器
t_1.get(url)                                           # 打开网页
t_1.maximize_window()                                  # 窗口最大化
js = "return action=document.body.scrollHeight"
new_height = t_1.execute_script(js)                    # 获得网页的高,单位px
for i in range(0, new_height+2000, 200):               # 每次向下划动200像素
    t_1.execute_script('window.scrollTo(0, %s)' % i)
    time.sleep(1)                                      # 可以等待一秒,让网页加载

# ------------------------------------------------------ 结束后网页就被拉到最底,这时所有的图片都被加载出来了

attrs = t_1.find_elements_by_xpath('//*[@id="app"]/div[2]/div[1]//img') # 获得图片所在的元素
for i in attrs:
    image_urls.append(i.get_attribute('src'))          # 遍历元素,将图片的地址取出   
for i in range(0, len(image_urls)):                    
    response = urllib.request.urlopen(i)               # 这时再用request打开每张图片地址   
    file = open("image"+str[i+1]+".png","wb")          # 打开文件,保存到本地,以png格式保存,由于是图片,需要以二进制方式打开
    file.write(response.read())                        # 写入时不需要解码                        
file.close()                                           # 关闭文件

可在本地获得如下图片

总结:

selenium除了做这些简单的操作,还可以模仿登录,模仿鼠标的拖动等,但是它的弊端也很明显,就是爬取速度太慢。

不论是怎么爬取,都是1,获取数据。2,查找数据。3,保存数据等几步骤完成的。也就是说本质上能拿到网页的html的文档就可以爬取数据。

比如再linux下使用curl命令加上正则表达式,用一条命令即可爬取到数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jchenn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值