Python selenium的爬虫无法完整爬取整个页面的内容

CSDN问答 2021-10-27 10:51:55
Python 爬虫 selenium 完整 无法

问题:
1 爬取的内容不完整,在爬取了大部分内容后就又开始爬取另一个页面。
2 页面会自己变成一个VIP充的无关页面,导致报错。这种情况是被反爬了么?
3 有些页面只有VIP才能观看,这样的话还能用selenium爬取么?
代码如下:

from selenium import webdriverimport timeglobal pages#全局变量。如果可以的话希望能换个地方呆着。全局变量的写法,先后顺序pages=set()#一万个页面的储存体driver = webdriver.Chrome()driver.get('https://snail.baidu.com/ndyanbao/browse/index#/search')#print(driver.current_url)#打印当前的urltime.sleep(5)i=0while i < 1000: i=i+1 elements = driver.find_elements_by_class_name('report-title') # 第一层的标题的按钮 for element in elements: element.click()#可以先把链接存起来,也可以直接开始:它本身的文本内容以及页面内的其他文章链接 hand = driver.window_handles # 获取当前的所有句柄 driver.switch_to.window(hand[-1]) # 转换窗口至最高的句柄 dlans = driver.find_elements_by_xpath('//*[@id="view-app"]/div[3]/div/div[3]')#登录观看 if dlans :#登录按钮存在时 dlan = dlans[0] driver.execute_script("arguments[0].click();", dlan) time.sleep(5) yhm = driver.find_elements_by_css_selector('#TANGRAM__PSP_11__footerULoginBtn') # 用户名登录 yhmd = yhm[0] yhmd.click() yh = driver.find_elements_by_css_selector('#TANGRAM__PSP_11__userName') # 用户名 yh = yh[0] yh.send_keys('用户名') mm = driver.find_elements_by_css_selector('#TANGRAM__PSP_11__password') # 密码 mm = mm[0] mm.send_keys('密码') dl = driver.find_elements_by_css_selector('#TANGRAM__PSP_11__submit') # 点击登录按钮 dl = dl[0] dl.click() time.sleep(10) xt = driver.find_elements_by_class_name('reader-word-layer') # 爬取文章内容#加入百度文库4的代码 xt2 = [str(i.text) for i in xt] print(''.join(xt2)) # 后期改为TXT。join列表方法 wz = driver.current_url # 当前的url pages.add(wz) # 将第一层的10000个页面全部存进pages中,方便后面判断 time.sleep(5) # driver.quit()#如何关闭子页面呢? hand = driver.window_handles # 获取当前的所有句柄 driver.switch_to.window(hand[0]) # 转换原始页面 else:#登录按钮不存在 time.sleep(10) print('吾皇万岁万岁万万岁') xt = driver.find_elements_by_class_name('reader-word-layer') # 爬取文章内容#加入百度文库4的代码 xt2 = [str(i.text) for i in xt] print(''.join(xt2)) # 后期改为TXT。join列表方法 wz = driver.current_url # 当前的url pages.add(wz) # 将第一层的10000个页面全部存进pages中,方便后面判断 time.sleep(5) hand = driver.window_handles # 获取当前的所有句柄 driver.switch_to.window(hand[0]) # 转换原始页面 nps= driver.find_elements_by_class_name('el-icon.el-icon-arrow-right') #下一页按钮 for np in nps: np.click()else: for page in pages:#第一层以及后边几层的网址 driver.get('page') qts=driver.find_elements_by_class_name('doc-title')#当前页面中含有的的其他文本的按钮.准备进入第二层 for qt in qts:#当前页面内可操作的文本标题 qt.click()#之后要在其他页面上重复操作。进入第二层 hand = driver.window_handles # 获取当前的所有句柄 driver.switch_to.window(hand[1]) # 转换窗口至最高的句柄 ht = driver.current_url#获得他们的URL time.sleep(30) LD = driver.find_elements_by_class_name('btn login-btn') # 登录观看 if LD : ld = LD[0] ld.click() yhm = driver.find_elements_by_css_selector('#TANGRAM__PSP_11__footerULoginBtn') # 用户名登录 yhmd = yhm[0] yhmd.click() yh = driver.find_elements_by_css_selector('#TANGRAM__PSP_11__userName') # 用户名 yh = yh[0] yh.send_keys('用户名') mm = driver.find_elements_by_css_selector('#TANGRAM__PSP_11__password') # 密码 mm = mm[0] mm.send_keys('密码') dl = driver.find_elements_by_css_selector('#TANGRAM__PSP_11__submit') # 点击登录按钮 dl = dl[0] dl.click() time.sleep(10) xt = driver.find_elements_by_class_name('reader-word-layer') # 爬取文章内容#加入百度文库4的代码 xt2 = [str(i.text) for i in xt] print(''.join(xt2)) # 后期改为TXT。join列表方法 wz = driver.current_url # 当前的url time.sleep(10) pages.add(wz) # 将第一层的10000个页面全部存进pages中 time.sleep(5) # driver.quit() if ht not in pages: pages.add(ht) # driver.quit() else: time.sleep(10) xt = driver.find_elements_by_class_name('reader-word-layer') # 爬取文章内容#加入百度文库4的代码 xt2 = [str(i.text) for i in xt] print(''.join(xt2)) # 后期改为TXT。join列表方法 wz = driver.current_url # 当前的url time.sleep(10) pages.add(wz) # 将第一层的10000个页面全部存进pages中 time.sleep(5) # driver.quit() if ht not in pages: pages.add(ht) # driver.quit()



参考答案1:
  1. 爬取内容不完整,应该是文档的更多内容,要往下滑动页面才会出现
  2. 这个不太清楚,应该不是什么反爬,就是类似于中途给你弹出个广告,要具体分析怎么弄
  3. VIP内容肯定是需要你的账号是VIP才能看得到的,与selenium无关。你想不花钱享受付费服务,这种破解似乎是违法的,谨慎。。



参考答案2:
版权声明
本文为[CSDN问答]所创,转载请带上原文链接,感谢
https://ask.csdn.net/questions/7542663

  1. python将字符串转成特定列表格式
  2. Python做一个保护手机号编程
  3. 用Spyder运行Python爬虫时仅输出“runfile(xx), wdir=xx”
  4. 使用Python对一组数据进行分段拟合,如何处理断点处的左右倒数相等
  5. Python输出符合条件的文件的路径名
  6. Python中pandas怎么实现分组去重统计和求和
  7. python xpath 爬虫,请帮帮我吧!
  8. python 用泰勒公式近似计算sinx的值 求解代码中哪里出现了错误
  9. Python语法2
  10. python如何将输出的各行数字对齐
  11. 使用 Python 进行数据可视化之Matplotlib
  12. python新鲜题 老公们 救救孩子
  13. 如何用python解答 要如何着手
  14. 请问Python正则表达式如何在多个文本中匹配出关键字
  15. Python 三天打鱼两天晒网问题
  16. mac安装python3
  17. 請問python要怎麼印数字倒等腰三角形
  18. 【算法学习】807. 保持城市天际线(java / c / c++ / python / go / rust)
  19. 【算法学习】237. 删除链表中的节点(java / c / c++ / python / go)
  20. 【算法学习】1512. 好数对的数目(java / c / c++ / python / go / rust)
  21. 【算法学习】1672. 最富有客户的资产总量(java / c / c++ / python / go / rust)
  22. 【算法学习】771. 宝石与石头(java / c / c++ / python / go / rust)
  23. 【算法学习】02.03. 删除中间节点(java / c / c++ / python / go)
  24. 【算法学习】1769. 移动所有球到每个盒子所需的最小操作数(java / c / c++ / python / go / rust)
  25. 【算法学习】1486. 数组异或操作(java / c / c++ / python / go / rust)
  26. 【算法学习】剑指 Offer 64. 求1+2+…+n(java / c / c++ / python / go / rust)
  27. 【算法学习】LCP 44. 开幕式焰火(java / c / c++ / python / go / rust)
  28. 【算法学习】剑指 Offer 58 - II. 左旋转字符串(java / c / c++ / python / go / rust)
  29. python的学校疑问难题求解
  30. 大学python题 作业题 基础题
  31. Python字典的知识,输出的样例为,最高分:89
  32. python写入文件失败且程序提前中止
  33. 用Python写一个学生字典,帮帮忙
  34. Python,能不能帮帮忙,真的不会
  35. [python] yield 和 readline() 的使用问题
  36. python安装找不到问题救救孩子
  37. python中循环结构完成数字游戏
  38. 如何用python实现多列vlookup(excle操作)
  39. python语言deLong‘s test:通过统计学的角度来比较两个ROC曲线、检验两个ROC曲线的差异是否具有统计显著性
  40. LPC55S69 MicroPython模组和库函数
  41. LPC55S69 IoT Kit专属 Micropython模组和库函数简介
  42. 安装LPC55S69 MicroPython模块是遇到的CDC Interface驱动问题
  43. 使用soundcard在Python中操作声卡
  44. 自动化快速上手--Python(7)--【字典】--每天半小时
  45. Python之循环结构【包括列表、for语句、range()函数、while语句、循环嵌套、break、continue、算法优化等】
  46. Python模块安装与异常处理详解(numpy、pygame、matplotlib等)
  47. Python__init__.py作用
  48. python 爬取网页时出现多种错误
  49. Python中关于大量绘制速度曲线的问题
  50. python-async的安装和使用方法
  51. Matlab的fread(fild,1,int32)迁移到python变成什么
  52. 想用python开发一个音频过滤器,请指导?
  53. python使用openpyxl读取Excel文件显示No such file or directory
  54. xmoji虚拟头像交互如何使用python(像深度学习)制作?
  55. python 打开页面页面的链接,为什么总是报错呀?
  56. Python中DataLoader的batch_size、shuffle的疑惑。
  57. python安装pymssql库,可以import,但无法调用函数
  58. 【Python学习教程】常用的8个Python数据可视化库!
  59. python处理csv中的时间
  60. 数据结构,元音统计(Python)