首页 > 其他分享 >p站图片爬取

p站图片爬取

时间:2024-02-18 09:44:54浏览次数:29  
标签:webdriver selenium driver 爬取 input import login 图片

python爬虫主要思路:
1.选取目标网页:获得链接,观察源代码构成。
2.用request库的get方法取得源代码。其中header参数用于伪装正常浏览器发送请求,proxies用于设置访问代理,url为目标网站
3.获取text后用BS对象查找相应内容标签,要注意利用id,class名的特殊性。
4.获取到相应内容标签后需提取内容:正则或其他方法。如a标签中的href内容可用href=a['href]提取,img标签中的src可用src=a['src‘]提取,左边为变量名,可随意。
5.提取到链接后用with写入文件较稳定便捷,文本内容用文本形式w写入,图片内容用二进制形式wb写入

目标网站:
https://www.pixiv.net/users/911893

若直接用request获取,只能得到部分内容,原因是该网站有登录保护。
所以采用selenium自动化打开网页获取源代码。鉴于edge太过流氓,不好回溯版本,以至于webdriver版本远落后于edge版本,故采用chrome。
自动化目的:登录pixiv主网站,再跳转至目标网站,获取源代码。

点击查看代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import time
import re
# 创建Chrome WebDriver实例
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.pixiv.net")

# 根据class名称找到登录链接元素
login_link = driver.find_element(By.CLASS_NAME, "signup-form__submit--login")

# 点击登录链接
login_link.click()
email_input = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, 'input[placeholder="邮箱地址或pixiv ID"]'))
)

# 输入邮箱地址或Pixiv ID
email_input.send_keys("your_username")

# 找到密码输入框
password_input = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, 'input[placeholder="密码"]'))
)

# 输入密码
password_input.send_keys("your_password")
# 点击登录按钮
# 点击登录按钮
login_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, '.sc-bdnxRM.jvCTkj.sc-dlnjwi.klNrDe.sc-2o1uwj-10.jQmNGr.sc-2o1uwj-10.jQmNGr'))
)

login_button.click()

time.sleep(5)
driver.get("https://www.pixiv.net/users/911893/artworks")
time.sleep(5)
page=driver.page_source
soup=BeautifulSoup(page,'html.parser')

标签:webdriver,selenium,driver,爬取,input,import,login,图片
From: https://www.cnblogs.com/wukaz1/p/18018793

相关文章

  • Python 爬取历史天气数据
    网站原始数据https://www.tianqishi.com/hangzhou/20240214.html源码importrequestsfrombs4importBeautifulSoupimportdatetimedefgetEachDayWeather(loaction,timeStamp):"""获取每一天的天气数据"""#1.获取网页地址urlHea......
  • 小白也行的:Easy OCR做一款免费的图片转文字
    \text{EasyOCR}支持超过$80$种语言的识别,包括英语、中文(简繁)、阿拉伯文、日文等,并且该库在不断更新中,未来会支持更多的语言。像市面上所有的图片识别都用的是$\text{OCR}$,如微信,百度。个人推荐软件:微信,网站https://web.baimiaoapp.com,该网站识别准确率是真的高,且收费也很人性......
  • 小程序 图片
     图片URL ......
  • esp32笔记[15]-使用LVGL 9.0显示图片
    摘要在esp32s3上使用LVGL9.0显示图片.关键信息编译环境:ESP-IDFv4.4LVGL:9.0board:酷世DIYESP32S3开发板Link:https://item.taobao.com/item.htm?&id=655913924680flashsize:8MBLCDdriver:ILI9341LCDmodule:2.4TFTSPI240x320v1.2Touchdriver:XPT2046......
  • 06-图片验证码识别
    本节目标:图片验证码识别+其他1.图片验证码在很多登录、注册、频繁操作等行为时,一般都会加入验证码的功能。如果想要基于代码实现某些功能,就必须实现:自动识别验证码,然后再做其他功能。2.识别基于Python的模块ddddocr可以实现对图片验证码的识别。pip3.11installdddd......
  • C++OpenCV 按之前图片名称保存图片
    C++OpenCV按之前图片名称保存图片://图片地址cv::Stringpattern="./path/*.jpeg";//可以使用cv::glob函数来获取匹配模式的文件路径列表std::vector<cv::String>file_paths;cv::glob(pattern,file_paths);for(size_ti=0;i<file_paths.size();i++){//......
  • c++ OpenCV 读取某个文件夹下的所有图片
    方案一:将文件夹中图像遍历到vector中#include<vector>#include<opencv2/imgproc.hpp>#include<opencv2/highgui.hpp>std::vector<cv::Mat>ReadImage(cv::Stringpattern){std::vector<cv::String>fn;cv::glob(pattern,fn,false);......
  • 爬取 【豆瓣电影top250数据】 python代码
    importrequestsimportopenpyxlimportreimporttimeimportpymysqlclassDoubanSpider:def__init__(self):self.url_temp="https://movie.douban.com/top250?start={}"self.headers={'User-Agent':'Mozilla/5.0......
  • el-image实现在el-table-column中展示多张图片,且能够大图循环预览
    效果:能在表格中展示且点击需要查看的即可放大查看,多组图片放大时可左右切换  核心代码:注意:workPhoto是图片地址的数组通过v-for来遍历每个列表的图片地址数组,结合:src="item"把每个图片展示在表格里,展示图片的大小样式用style来设定通过:perview-src-list="getImgList(s......
  • Avalonia 越来越流行了,记录练手一个项目.就下载bing的图片吧
     只要有桌面需求那肯定掏出万年winform..偶然接触到了Avalonia把去年练手的项目整理了一下不知道大家练手都写什么...总的来说xaml习惯和wpf差不多.对于我这种经常写前端的后端来说.Avalonia支持css写法很省事. 技术栈Avalonia0.10.18NET7CommunityToolkit.Mvvm......