爬虫之实战
·
爬虫之实战
【案例1】通过selenium爬取UPUPOO动态壁纸网站的壁纸,爬完之后把壁纸保存在桌面的文件夹里。
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
import os
import requests
# # 获取桌面路径并新建文件夹
desktop_path = os.path.join('E:\桌面')
folder_name = '图片集'
folder_path = os.path.join(desktop_path, folder_name)
# 如果文件夹不存在,则创建
if not os.path.exists(folder_path):
os.makedirs(folder_path)
print(f"文件夹 '{folder_name}' 已成功创建在桌面。")
else:
print(f"文件夹 '{folder_name}' 已存在。")
#启动浏览器
driver = webdriver.Chrome()
driver.get("https://www.apumao.vip/bd01?n=88092670231123&bd_vid=11056690673784707587")
driver.implicitly_wait(10)
# 爬取图片网站的图片
for i in range(1, 11):
driver.implicitly_wait(3)
tag_list = driver.find_element(By.XPATH, f"//ul[@class='wallpaper-tag-list']/li[{i}]")
sleep(3)
if tag_list:
tag_list.click()
sleep(2)
images = driver.find_elements(By.XPATH, "//ul[@class='wallpaper-list']/li//img")
for image in images:
img_url = image.get_attribute('src')
# print(f'【{tag_list.text}】 —— {img_url}')
response = requests.get(img_url)
image_name = f'image_{img_url.split("/")[-2]}.jpg'
img_path = os.path.join(folder_path, image_name)
with open(img_path, "wb") as file:
file.write(response.content)
print(f"图片已保存到 {img_path}")
continue
driver.quit()
【案例2】通过Appium爬取书旗小说App推荐榜的第一本书的书名,作者,评分,人数,票数等信息。
from appium import webdriver
from selenium.common import WebDriverException
from selenium.webdriver.common.by import By
from appium.webdriver.extensions.android.nativekey import AndroidKey
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy
from time import sleep
from appium.webdriver.common.appiumby import AppiumBy
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '7.1.2', # 手机安卓版本,如果是鸿蒙系统,依次尝试 12、11、10 这些版本号
'deviceName': 'beyondlq',
'appPackage': 'com.shuqi.controller', # 启动APP Package名称
'appActivity': 'com.shuqi.home.MainActivity', # 启动Activity名称
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub',
options=UiAutomator2Options().load_capabilities(desired_caps))
# 设置缺省等待时间
driver.implicitly_wait(10)
#弹出欢迎使用,点击同意
driver.implicitly_wait(0)
consentElement=driver.find_element(AppiumBy.ID,"btn_right")
if consentElement:
consentElement.click()
sleep(14)
#爬取推荐榜里面的书信息
driver.implicitly_wait(0)
RecommendedLeaderboardElement=driver.find_element(AppiumBy.XPATH,"//android.widget.TextView[@text='推荐榜']")
if RecommendedLeaderboardElement:
RecommendedLeaderboardElement.click()
sleep(8)
bookNameElement=driver.find_element(AppiumBy.XPATH,"tpl_book_name")
if bookNameElement:
bookNameElement.click()
sleep(8)
#书名
book_name=driver.find_element(AppiumBy.ID,"tv_book_name")
#作者
author=driver.find_element(AppiumBy.ID,"tv_book_author")
#评分
grade=driver.find_element(AppiumBy.ID,"tv_comment_count_num")
#阅读人数
number=driver.find_element(AppiumBy.ID,"tv_reading_count_num")
#票数
ticket=driver.find_element(AppiumBy.ID,"tv_book_word_count_num")
print(f"{book_name.text} - {author.text} - {grade.text}分 - {number.text}万人 - {ticket.text}万票")
伙伴们可以根据自己的需求,去改写代码,爬取更多的信息,这些代码是基础的练习,祝你们好运哦。
更多推荐
所有评论(0)