51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6317|回复: 2
打印 上一主题 下一主题

python selenium 用scrapy爬取时,点击后的页面是否应该用response来获取

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:47
  • 签到天数: 528 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2021-7-16 13:26:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    代码如下
    1. import scrapy
    2. from ..items import ShujukuItem
    3. import selenium
    4. import time
    5. from selenium import webdriver
    6. from selenium.webdriver.common.action_chains import ActionChains
    7. class SjkSpider(scrapy.Spider):
    8.     name = 'sjk'
    9.     allowed_domains = ['fintechdb.cn']
    10.     start_urls = ['http://www.fintechdb.cn/']
    11.     def parse(self, response):
    12.         item = ShujukuItem()
    13.         location_data = input("所在地区")
    14.         field_data = input("业务领域")
    15.         financing_data = input("融资轮次")
    16.         option = webdriver.ChromeOptions()
    17.         option.add_argument('--headless')
    18.         option.add_argument('--disable-gpu')
    19.         option.add_argument('--disable-javascript')
    20.         option.add_argument('blink-settings=imagesEnabled=false')
    21.         option.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])
    22.         driver = webdriver.Chrome(chrome_options=option)
    23.         driver.get('http://www.fintechdb.cn/')
    24.         location = response.xpath('//*[@id="filter-tag"]/dl/dd[1]/ul/li[*]/a/text()').getall()
    25.         field = response.xpath('//*[@id="filter-tag"]/dl/dd[2]/ul/li[*]/a/text()').getall()
    26.         financing = response.xpath('//*[@id="filter-tag"]/dl/dd[3]/ul/li[*]/a/text()').getall()
    27.         a = location.index(location_data) + 1
    28.         b = field.index(field_data) + 1
    29.         c = financing.index(financing_data) + 1
    30.         # print(a,b,c)
    31.         loc = response.xpath(f'//*[@id="filter-tag"]/dl/dd[1]/ul/li[{a}]/a/text()').get()
    32.         fie = response.xpath(f'//*[@id="filter-tag"]/dl/dd[2]/ul/li[{b}]/a/text()').get()
    33.         fin = response.xpath(f'//*[@id="filter-tag"]/dl/dd[3]/ul/li[{c}]/a/text()').get()
    34.         # print(loc)
    35.         click_01 = driver.find_element_by_xpath(f'//*[@id="filter-tag"]/dl/dd[1]/ul/li[{a}]/a')
    36.         ActionChains(driver).move_to_element(click_01).click(click_01).perform()
    37.         click_02 = driver.find_element_by_xpath(f'//*[@id="filter-tag"]/dl/dd[2]/ul/li[{b}]/a')
    38.         ActionChains(driver).move_to_element(click_02).click(click_02).perform()
    39.         click_03 = driver.find_element_by_xpath(f'//*[@id="filter-tag"]/dl/dd[3]/ul/li[{c}]/a')
    40.         ActionChains(driver).move_to_element(click_03).click(click_03).perform()
    41.         # while True:
    42.         #     if response.xpath('//*[@id="home-load-more"]/@style/text()').get() == 'display: block;':
    43.         #         driver.find_element_by_id('home-load-more').click()
    44.         #     else:
    45.         #         break
    46.         title = response.xpath('//*[@id="company-list"]/div[*]/a/div/div[2]/text()').getall()
    47.         time = response.xpath('//*[@id="company-list"]/div[*]/a/div/p[1]/text()').getall()
    48.         fie = response.xpath('//*[@id="company-list"]/div[*]/a/div/p[2]/text()').getall()
    49.         fin = response.xpath('//*[@id="company-list"]/div[*]/a/div/p[3]/text()').getall()
    50.         print(title)
    51.         item['title'] = title
    52.         item['time'] = time
    53.         item['fie'] = fie
    54.         item['fin'] = fin
    55.         yield item
    复制代码
    问题是

    1.         title = response.xpath('//*[@id="company-list"]/div[*]/a/div/div[2]/text()').getall()
    2.         time = response.xpath('//*[@id="company-list"]/div[*]/a/div/p[1]/text()').getall()
    3.         fie = response.xpath('//*[@id="company-list"]/div[*]/a/div/p[2]/text()').getall()
    4.         fin = response.xpath('//*[@id="company-list"]/div[*]/a/div/p[3]/text()').getall()
    复制代码
    这些代码应该在selenium实现点击后再爬取,那么是否应该还为response.xpath,还是应该用什么
    因为我过程中打印两组数据确定已经定位到位置了并且更改click的方式确保点击到
    但是打印出的结果仍为未点击的结果
    所以就在思考是不是最后这里response的问题

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:48
  • 签到天数: 1802 天

    连续签到: 1 天

    [LV.Master]测试大本营

    2#
    发表于 2021-7-19 09:36:16 | 只看该作者
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:24
  • 签到天数: 1517 天

    连续签到: 1 天

    [LV.Master]测试大本营

    3#
    发表于 2021-7-19 10:56:25 | 只看该作者
    返回是可以直接存为变量的
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-19 08:39 , Processed in 0.063506 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表