python+selenium浏览器模拟信息爬取

python+selenium浏览器模拟信息爬取

目录

1 本篇重点
  • selenium和bs4的结合使用
  • 解决【href="javascript:void(0)】问题

​ 在selenium进行浏览器模拟爬虫时,会遇见【href="javascript:void(0)】的标签内容,这里就无法进行点击行为,对于自己遇见的这一问题,如何处理是本篇的重点之一。

在这里插入图片描述
在这里插入图片描述

2 目标需求

​ 在不登录豆瓣网站的情况下,获取豆瓣电影主题模块中,最近热门电影第2页的《四海》

3.python脚本
"""
-*- coding: utf-8 -*-
-- @author: phil
-- @Time:2022/5/18 18:45
"""
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException

class Demo_douban():
    def __init__(self):
        self.start_url = 'https://movie.douban.com/'
        self.driver = webdriver.Firefox()

    def SPT_one(self):
        # 进入电影主题模块
        self.driver.get(self.start_url)
        self.driver.find_element_by_xpath("//*[@class ='btn-next']").click()
        time.sleep(1)
        print('完成类似登录!')
        
    def wait(self, locator, timeout=5):
        '''等到元素加载完成'''
        WebDriverWait(self.driver, timeout).until(EC.presence_of_element_located(locator))

    def Super_get(self):
        # 解决:href="javascript:void(0);" 的页面加载问题
        # 相对路径定位:find_element_by_xpath("//form[@id='form']/span/input")
        path_a = "//div[@class='gaia gaia-lite gaia-movie slide-mode']/div[@class='list-wp']/div/div[2]/a[@class='btn-next']"
        locator = (By.XPATH, path_a)
        self.wait(locator)
        # 异常的捕获
        try:
            elements = self.driver.find_elements_by_xpath(path_a)  # 再次获取元素,预防StaleElementReferenceException
            self.driver.execute_script('arguments[0].click();', elements[0])  # 模拟用户点击
            print('已经点击!')
        except NoSuchElementException:
            print('NoSuchElementException')
        time.sleep(3)
        print(self.driver.current_url)
        
    def bs4_execute(self):
        # bs4的html解析
        url_a = 'https://movie.douban.com/subject/35250237/?tag=热门&from=gaia'
        ele = self.driver.find_element_by_xpath("//a[@href = '{}' ]".format(url_a))
        html = ele.get_attribute('innerHTML')
        print('html是:' + html)
        time.sleep(1)
        soup = BeautifulSoup(html, 'html5lib')      # 指定用html5lib来解析文档
        # 在查找的html中再找子标签的内容
        target = soup.find('p').get_text().replace('\n', '').split()       # target 是 str类型 .split('\n')
        # 列表
        print('电影名称:' + '\n' + '{}'.format(target[0]))
        # self.driver.quit()

# 运行命令
if __name__ == '__main__':
    SPT = Demo_CSDNweb()
    SPT.SPT_one()
    SPT.Super_get()
    SPT.bs4_execute()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值