您的位置:首页 > 理论基础 > 计算机网络

python网络爬虫自动化下载股票类电子书(1)

2017-12-10 21:24 274 查看
写了一个自动化下载的程序,下载了几个试了一下,发现当百度云中要下载的文件过大的时候,频繁下载需要验证码的时候,不使用百度云下载的时候,会出现下载失败,程序还要进一步改进。姑且跑一边试试

#2018-02-07:今天又尝试下载了一下,面临两个问题,第一个是百度网盘下载次数多之后会出现验证码,第二个是百度网盘的文件数是几个是不确定的,原代码仅仅只能适用一个文件的情形。后续可以尝试保存到自己的网盘中,不进行下载。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd
import requests
import re
import time
driver=webdriver.Chrome()
def xiazai(myurl):
myrul=url_list[1]
try:
all_handles = driver.window_handles
if len(all_handles)==1:
driver.switch_to_window(all_handles[0])
if len(all_handles)>1:
for i in range(1,len(all_handles)):
driver.switch_to_window(all_handles[i])
driver.close()
driver.switch_to_window(all_handles[0])
driver.get('http://www.88gs.com'+myurl)
#获取下载地址
page=driver.page_source
p_url=re.compile(r"""<ul class="downlistbox">[\s\S]*?<a href="([\s\S]*?)"><img src=""")
url=p_url.findall(page)[0]
#进入下载地址
driver.get('http://www.88gs.com'+url)
driver.find_element_by_partial_link_text('下载地址1').click()
all_handles = driver.window_handles #获取所有窗口句柄
driver.switch_to_window(all_handles[1])
time.sleep(5)
#百度网盘下载
#driver.find_element_by_partial_link_text('下载').click()
driver.find_element_by_xpath('//*[@id="layoutMain"]/div[1]/div[1]/div/div[2]/div/div/div[2]/a[2]/span/span').click()
time.sleep(5)
driver.close() #关闭当前窗口
driver.switch_to_window(all_handles[0]) #返回主窗口
except:
lose_url.append('http://www.88gs.com'+url)
def get_url():
url_list=[]
for i in range(1,132):
print(i)
url='http://www.88gs.com/soft/sort011/list11_'+str(i)+'.html'
#url='http://www.88gs.com/soft/sort011/list11_131.html'
driver.get(url)
page=driver.page_source
p_url=re.compile(r"""mainSoftName"><a href="([\s\S]*?)"[\s\S]*?title=""")
url=p_url.findall(page)
url_list.extend(url)
return url_list
url_list=get_url()
len(url_list)
lose_url=[]
for myurl in url_list[2:]:
xiazai(myurl)
print(myurl)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd
import requests
import re
driver=webdriver.Chrome('C:/Users/Administrator/Desktop/chromedriver.exe')
def xiazai(myurl):
try:
driver.get('http://www.88gs.com'+myurl)
#获取下载地址
page=driver.page_source
p_url=re.compile(r"""<ul class="downlistbox">[\s\S]*?<a href="([\s\S]*?)"><img src=""")
url=p_url.findall(page)[0]
#进入下载地址
driver.get('http://www.88gs.com'+url)
driver.find_element_by_partial_link_text('下载地址').click()
now_handle = driver.current_window_handle #获取当前窗口句柄
all_handles = driver.window_handles #获取所有窗口句柄
for handle in all_handles:
if handle != now_handle:
print (handle)    #输出待选择的窗口句柄
driver.switch_to_window(handle)
time.sleep(5)
#百度网盘下载
driver.find_element_by_partial_link_text('下载').click()
time.sleep(5)
driver.close() #关闭当前窗口
driver.switch_to_window(now_handle) #返回主窗口
except:
pass
def get_url():
url_list=[]
for i in range(1,132):
print(i)
url='http://www.88gs.com/soft/sort011/list11_'+str(i)+'.html'
#url='http://www.88gs.com/soft/sort011/list11_131.html'
driver.get(url)
page=driver.page_source
p_url=re.compile(r"""mainSoftName"><a href="([\s\S]*?)"[\s\S]*?title=""")
url=p_url.findall(page)
url_list.extend(url)
return url_list
url_list=get_url()
len(url_list)
for myurl in url_list:
xiazai(myurl)
print(myurl)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: