scrapy 为什么xpath的text函数没有显示 selenium 屑的数据?

whitzsjs  于 2023-02-16  发布在  其他
关注(0)|答案(2)|浏览(146)

我试图刮一个网站与scrapy-selenium。我面临着两个问题
1.我在chrome开发工具上应用了xpath,我找到了所有元素,但在执行代码后,它只返回一个选择器对象。

  1. xpath表达式的text()函数返回无。
    这是我试图刮的URL:http://www.atab.org.bd/Member/Dhaka_Zone
    下面是检查器工具的屏幕截图:

下面是我的代码:

# -*- coding: utf-8 -*-

import scrapy
from scrapy.selector import Selector
from scrapy_selenium import SeleniumRequest
from selenium.webdriver.common.keys import Keys

class AtabDSpider(scrapy.Spider):
    name = 'atab_d'

    def start_requests(self):

        yield SeleniumRequest(
            url = "https://www.atab.org.bd/Member/Dhaka_Zone",
            #url = "https://www.bit2lead.com",
            #wait_time = 15,
            wait_time = 3,
            callback = self.parse
        )

    def parse(self, response):
        companies = response.xpath("//ul[@class='row']/li")
        print("Numbers Of Iterable Item: " + str(len(companies)))
        for company in companies:
            yield {
                "company": company.xpath(".//div[@class='card']/div[1]/div/a/h3[@data-bind='text: NameOfOrganization']/text()").get()
                #also tried
                #"company": company.xpath(".//div[@class='card']/div[1]/div/a/h3/text()").get()
            }

下面是我的终端屏幕截图:

这是网址:(https://www.algoslab.com)我之前练习过效果不错,虽然很简单。

zbwhf8kr

zbwhf8kr1#

你为什么不直接尝试像下面这样,让一切都在一眨眼的功夫:

import requests

link = 'http://123.253.36.205:8051/API/Member/GetMembersList?searchString=&zone=0&blacklisted=false'

r = requests.get(link)
for item in r.json():
    _name = item['NameOfOrganization']
    phone = item['Phone']
    print(_name,phone)

输出如下所示(应生成3160行结果):

Aqib Travels & Tours Ltd. +88-029101468, 58151369
4S Tours & Travels Ltd 8954750
5M Logistics And Tours Ltd +880 2 48810030
bf1o4zei

bf1o4zei2#

可以将所需的xpath简化为//h3[@data-bind='text: NameOfOrganization'],以选择元素,然后查看文本

相关问题