本文来源吾爱破解论坛
本帖最后由 mychi 于 2019-6-11 19:03 编辑 image.png (289.98 KB, 下载次数: 3)
下载附件
保存到相册
访问错误
mzitu.png
(82.09 KB, 下载次数: 4)
下载附件
保存到相册
2019-6-11 18:04 上传
mzitu-403
example.png
(140.99 KB, 下载次数: 3)
下载附件
保存到相册
2019-6-11 18:47 上传
Resques.7z
2019-6-11 18:42 上传 点击文件名下载附件
前言:
开始我用Requests写的有问题.
现在不能直接访问.我也不知道啥原因,但是百度快照的你可以连接进去
我就是这样搞的 好像是重定向可以 直接连接直接返回403
我之前搞过selenium,就整下试试.反正 你想要直接请求我看都GG
主页单页面数是27个 算上广告,选择css选择器能看到最后一个child
详情页面数,根据给的标题 正则能出来
用到的东西
工具:
Python3.7 PyCharm
框架:
pyautogui selenium pyautogui
集成的有:
re random time os
多写也就是5个方法!
search_context() 一层小的包装
each_page() 具体干活的方法
first_windows() 切换到第一个窗口(主页)
page_number() 获取详情页面具体的页数
switch_to_new_window() 切换到最新的窗口(详情页面)
先上一个很丑的画面,直接访问403,开始以为是我IP的问题,换了代{过}{滤}理还是这样的
度娘一下.还有这个的快照.我这就是简单些一个思路.大佬见了别喷我! 我对这个也不是太专业!
中间遇到的问题:
1.不能直接访问他的图片地址.也不能直接获取他的单页面(相册的总数),用了一个取巧的方法,获取标题饭后正则匹配一下 将数字匹配出来.也算是一个动态吧,不过是需要从后面往前下载保存!
2.os创建文件夹的时候正常应该是一个图集名字一个文件夹的,但是用pyautogui能写英文的,写不了中文的,卡住我一会
3.保存的时候需要用pyautogui配合使用,但是typewriter写的时候总把路径和后面的逻辑给写乱了!改为keyUp/keyDown
这里就是学习的 我也没有弄啥多线程.不仅没用多线程.就连我有时候的请求我都sleep一会!别搞搞在给我这两个IP 弄封了!
引用的代码
[Python] 纯文本查看 复制代码import pyautogui
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import re
import time
import random
import os
写在前面的:
[Python] 纯文本查看 复制代码browser = webdriver.Chrome()
wait = WebDriverWait(browser, 10)
target_url = "https://www.baidu.com/link?url=_zz8LxCfmwSav6kwxmvN_qsEjLtwA518y6jf3QaqdEPqTcp7kkn8C3huH57VAnAj&wd=&eqid=a63b61400011062a000000025cff060f"
search_context()
[Python] 纯文本查看 复制代码 try:
# todo Request target
browser.get(target_url)
print(browser.title)
# todo processing each page
each_page()
except TimeoutException:
# return search_context()
return print("resquest error")
each_page() 具体干活的方法
[Python] 纯文本查看 复制代码#processing each page
for i in range(1, 28):
#child page
css = ("#pins > li:nth-child(%s) > a" % str(i))
try:
target_label = wait.until(
EC.presence_of_element_located(
(By.CSS_SELECTOR, css)))
except Exception:
print("error occurred It could be advertising")
continue
# in to child page
target_label.click()
# into new windows
switch_to_new_window()
#last page number
last_page = wait.until(
EC.presence_of_element_located(
(By.CSS_SELECTOR, 'body > div.main > div.content > div.pagenavi > a:nth-child(7)')))
# todo click last pages
last_page.click()
# re match get page number
page_total_number = page_number()
# into new windows
switch_to_new_window()
#save path
root = "d:\\com.mzitu\\imgae" + str(i) + "\\"
if os.makedirs(root):
print(root + "File Dir Created Finish!")
else:
print("File Dir Exist!!")
#detail page processing
for x in range(page_total_number):
click_each_detail_page = wait.until(
EC.presence_of_element_located(
(By.CSS_SELECTOR, 'body > div.main > div.content > div.pagenavi > a:nth-child(1) > span')))
click_each_detail_page.click()
time.sleep(random.randint(0, 2))
# todo right click on the image
jpg = wait.until(EC.element_to_be_clickable((By.TAG_NAME, 'img')))
actions = ActionChains(browser)
actions.context_click(jpg)
actions.perform()
# #todo input v saved
pyautogui.keyDown("v")
time.sleep(1)
pyautogui.typewrite(root + str(x))
pyautogui.keyDown("enter")
pyautogui.keyUp("enter")
print("Is downloading...." + browser.title)
time.sleep(0.5)
pyautogui.keyDown("enter")
first_windows()
first_windows() 切换到第一个窗口
[Python] 纯文本查看 复制代码windows = browser.window_handles
browser.switch_to.window(windows[0])
page_number() 获取详情页面具体的页数
[Python] 纯文本查看 复制代码 return int(re.search('(\d+)', browser.title).group(1))
switch_to_new_window() 切换到最新的窗口(详情页面)
[Python] 纯文本查看 复制代码 windows = browser.window_handles
browser.switch_to.window(windows[-1])
time.sleep(random.randint(0, 3))
马上下班啦!交稿.上班闲暇时间玩玩还是不错的!还有个小Bug 就是每个图集都少一个图,因为直接是从len(图集)-1 开始的自己改下就可以啦!还要那个广告位我也没咋出来!总的来说就是不用requests写的有点麻烦!
代码上缴
1.59 KB, 下载次数: 102, 下载积分: 吾爱币 -1 CB
代码
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。
- 上一篇: 多进程实现文件复制-续集
- 下一篇: 【Python】赶集网二手房爬虫 (可扩展)