python爬虫训练项目3-selenium模拟爬取

本文介绍了使用Selenium和BeautifulSoup结合进行网页爬取的项目,包括在搜索框输入关键词,点击搜索,判断并处理搜索页的页数,以及如何利用Beautifulsoup分析信息并写入数据。同时提到了注意事项,如定位方法的选择和异常处理,并提供了源码示例及学习资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天尝试用selenium+Beautifulsoup爬取,整体思路如下:

1.在搜索框输入搜索关键词并点击搜索(用selenium定位搜索框和 “ 搜索 “ 按钮)

2.对搜索页进行分析,首先先获取所有窗口句柄(window_handles)并跳转到搜索页(switch_into);其次判断搜索到的“ 总页数 ”(用beautifulsoup);这里有个特殊情况需要考虑:当关键词的搜索页只有1页时,是不会显示“ 总页数 ”的网页标签信息的,所以这里要添加页数判断(if...else...)

3.不管是搜索页只有一页还是有多页,都需要用到Beautifulsoup进行信息分析,然后用xlwt写入数据。

4.如果实现翻页呢,可以结合for循环以及第2步获取到的 "总页数"进行实现

注意事项

1.用selenium进行定位时,要注意你所选择的定位方式是否会随着页面而变化,例如:实现翻页动作,我们需要定位到” 下一页 ”的按钮,笔者这里选择的使用CSS_SELECTOR进行定位,因为每一页的” 下一页 ”的按钮的SELECTOR值是不变化的,读者可以自行用F12检查试一下;而如果用XPATH定位的话,你会发现每一页的XPATH值都不同,这就会导致出现“  无法翻页  ”的问题;

2.做爬虫分析的时候,可以设置异常捕获(try...except)用于处理可能出现的异常问题;

源码

# encoding: utf-8

"""
  @author 张奕滨
  @create 2021-11-6 11:50
  Mycsdn:https://blog.youkuaiyun.com/qq_39338064?spm=1000.2115.3001.5343
  @contact: 948183482@qq.com
  @software: Pycharm
  @file: bili学习.py
  @Version:1.0
  @仅供个人学习用途,切勿用于其他用途
"""
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium import webdriver
from time import sleep
import random
import time
import xlwt
import os
from bs4 import BeautifulSoup


# 获取当前用户桌面路径
def desktop_path():
    return os.path.join(os.path.expanduser('~'), 'Desktop')


print('当前用户桌面路径为:', desktop_path
功能介绍 京东与1688项目两个项目具有极高的相似度,我首先写的京东爬虫,再写的1688爬虫,1688爬虫基于京东爬虫的构建思路,因此1688爬虫会比京东爬虫更深入,两者也会有一些重复的部分。 1、selenium反侦察。通过自动化工具,可以模拟正常人类的操作,但还是会有一些检测方式,可以检查到selenium之类的工具。这两个项目里配置了一个Chrome浏览器选项,开启了浏览器开发者模式,防止被爬网站通过js代码检查到自动化工具。可能还会有其他的反侦察方法,待我们继续深挖。 2、输入关键字查询,爬取显示页面所有商品。京东项目里面会爬取每个商品的商品名、店铺、价格、好评率。1688项目爬取分两部分,一个商品,一个店铺。商品里包括的信息:商品名、店铺地址、价格(以json字符串存入的数据库)、搜索关键字。店铺里包括的信息:店铺地址、店铺名、货描、响应、发货速度。 3、1688项目有店铺去重的功能。在搜索页面中,有许多店铺重复了,这里用redis的set保存了店铺的地址,如果店铺地址没有在set中,那就插入mysql数据库,反之则不插入。 4、1688项目异常处理。有些地方数据解析不到,解析不到就跳过当前的解析,进行下一解析,不会出现程序运行停止的情况。 另外内含详细截图+详细部署视频,还对过程中可能出现的问题进行了汇总,对于正在学习这方面的你是一个很好的选择,希望对你有所帮助。
首先,为了访问QQ空间相册,我们需要登录QQ账号。可以使用Selenium模拟用户登录QQ,然后使用BeautifulSoup解析相册页面,获相册中的图片链接。 以下是大致的实现步骤: 1. 安装Selenium和BeautifulSoup模块。 2. 使用Selenium模拟用户登录QQ,进入相册页面。 ```python from selenium import webdriver # 创建Chrome浏览器对象 browser = webdriver.Chrome() # 打开QQ登录页面 browser.get("https://mail.qq.com/") # 执行模拟登录操作,具体实现可以参考Selenium文档或其他相关教程 # ... # 进入相册页面 browser.get("http://user.qzone.qq.com/123456789/album") ``` 3. 使用BeautifulSoup解析相册页面,获相册中的图片链接。 ```python from bs4 import BeautifulSoup #相册页面的HTML源代码 html = browser.page_source # 使用BeautifulSoup解析HTML源代码,获相册中的图片链接 soup = BeautifulSoup(html, "html.parser") img_links = soup.find_all("img", class_="c_photo_img_img") # 打印图片链接 for link in img_links: print(link["src"]) ``` 4. 下载图片。 ```python import requests # 下载图片 for i, link in enumerate(img_links): img_url = link["src"] response = requests.get(img_url) with open(f"photo_{i}.jpg", "wb") as f: f.write(response.content) ``` 以上只是大致的实现步骤,具体的实现过程可能还需要根据实际情况进行调整。同时,需要注意的是,访问QQ空间相册需要登录QQ账号,因此需要注意账号安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ethan奕诚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值