为了账号安全,请及时绑定邮箱和手机立即绑定

父标签存在4个子标签内容,但只能爬取到2个。

/ 猿问

父标签存在4个子标签内容,但只能爬取到2个。

慕勒13948 2018-11-20 12:38:26

https://img3.mukewang.com/5bf38fa20001508d04700481.jpg

各位高手:本人小白,最近在学习爬虫技术,以携程网机票作为起步对象。 过程中发现使用子标签函数并不能返回所有的子标签内容

(如图),父标签是内容是<div class='flight-list">, 四个子标签内容均为 <div class>...</div> ,但实际能够取数的只有前两个,请问这是为什么,并如何解决呢?感激不尽!

代码:

from selenium import webdriver
from bs4 import BeautifulSoup
import time
brower = webdriver.PhantomJS(executable_path='D:/phantomjs-2.1.1-windows/phantomjs-2.1.1-windows/bin/phantomjs')
try:
  html_infor = brower.get("https://flights.ctrip.com/itinerary/roundtrip/KHH-WUH?date=2018-11-21,2018-11-21&portingToken=570b1bdc855c4eaba0654eb83e9923f7")
  time.sleep(20)
  pageSource = brower.page_source ###网页加载信息的实体化
  bsObj = BeautifulSoup(pageSource)  ###放进美汤
  for child in bsObj.find("div",{"class":"flight-list"}).children:
    print(child)
finally:
    brower.close()

查看完整描述

3 回答

?
weixin_左岸流年_03403549

三年多实打实工作经验写了无数爬虫老师傅给你点建议哈,别折腾这个了,没什么乱用,只能是看着厉害,实际应用中你会发现根本就不会用这个,速度太慢了,使用浏览器内核都挺慢了,这个东西更慢,基本满足不了所有爬虫需求,而且这个基本不会体现出爬虫和反爬虫的乐趣,直接分析请求吧,准对于实在无法解决的问题可以使用selenium操作无界面浏览器

查看完整回答
反对 回复 2019-03-26
?
MyFray

上面的格式太乱了,代码我在这里重新打一下

for i in range(20):
    js = "var q=document.documentElement.scrollTop={}"
    js = js.format((i+1) * 400)
    self.driver.execute_script(js)
    time.sleep(0.1)


查看完整回答
反对 回复 2018-11-22
?
MyFray

用selenium爬虫,可能有时候不是一下子加载出来的,可能需要模拟鼠标向下滚动,触发下面的。


查看完整回答
反对 回复 2018-11-20
  • 慕勒13948
    慕勒13948
    谢谢老兄!然而,请问有什么解决的方法吗?
  • MyFray
    MyFray
    类似下面的代码: for i in range(20): # 这个20是滚动的次数,视一页最长多少而定 js = "var q=document.documentElement.scrollTop={}" js = js.format((i+1) * 400) # 这个400是单次滚动的距离 self.driver.execute_script(js) # 这个driver根据自己的driver而定 写selenium爬虫的时候调试的时候可以先用chrome 的driver,配合time.sleep,自己可以看到浏览器是怎么运行的,方便找出有问题的地方

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信