Найти - Пользователи
Полная версия: AttributeError: 'str' object has no attribute 'xpath'
Начало » Python для новичков » AttributeError: 'str' object has no attribute 'xpath'
1 2
sasholy
Ошибка - AttributeError: ‘str’ object has no attribute ‘xpath’

 from requests_html import HTMLSession
session = HTMLSession()
response = session.get('https:.....').text
r = response.xpath('//*[@id="blgtble"]/tbody')

Что нужно прописать, чтобы response работало с xpath ?

спс!
py.user.next
https://requests-html.kennethreitz.org/
XPath is also supported (learn more):
  
>>> r.html.xpath('a')
[<Element 'a' class='btn' href='https://help.github.com/articles/supported-browsers'>]
  
r = session.get(url)
r.html.xpath('a')
sasholy
я не пойму, что нужно сделать со строкой
 r = response.html.xpath('//*[@id="blgtble"]/tbody')

если имели ввиду html, то все равно

AttributeError: ‘str’ object has no attribute ‘html’
FishHook
sasholy
Каждый объект имеет свой тип.
У объекта согласно его питу есть набор свойств и методов.
С чего вы взяли, что объект response имеет свойство html?
Вам интерпретатор вполне очевидно сообщает, что объект типа str свойства html не имеет.

Более того, вы делаете
 response = session.get('https:.....').text
как бы не надо быть Нострадамусом, чтобы догадаться, что .text - это текст, то есть строка. Нет у строки никаких .html
sasholy
так он и xpath не имеет, а вот такой кусок нашел и долблюсь
 while True:
        try:
            random_proxy = random.choice(proxies)
            random_proxy = {'http': random_proxy, 'https': random_proxy}
            resp = session.get(url, proxies=random_proxy, timeout=2)
            if resp.status_code == 200:
                break
        except Exception as e:
            print(type(e), e)
    # rand_sleep = random.randint(10, 30)
    # sleep(rand_sleep)
    print(url, resp.status_code)
    links = resp.html.xpath("//div[@class='r']/a/@href")
    domains = [x.split('/')[2].replace('www.', '') for x in links if 'http' in x]
    print("Keyword - ", key)

links = resp.html.xpath("//div/a/@href")
FishHook
sasholy
а вот такой кусок нашел и долблюсь
Так можно и голову раздолбить

 links = resp.html.xpath("//div[@class='r']/a/@href")

 response = session.get('https:.....').text
Вот с чего вы взяли, что это одно и то же?

Покажите, что такое resp, где эта переменная определяется в коде
py.user.next
sasholy
если имели ввиду html, то все равно
AttributeError: ‘str’ object has no attribute ‘html’
Потому что ты не убрал .text в конце.

Вот твой пример
  
from requests_html import HTMLSession
 
session = HTMLSession()
response = session.get('https:.....')
r = response.xpath('//*[@id="blgtble"]/tbody')
sasholy
 from requests_html import HTMLSession
session = HTMLSession()
response = session.get('https://free-proxy-list.net/')
r = response.xpath('//*[@id="proxylisttable"]/tbody')
for i in r:
    if i.xpath('//*[@id="proxylisttable"]/tbody/tr[*]/td[7]').text == 'yes':
        ip = i.xpath('//*[@id="proxylisttable"]/tbody/tr[*]/td[1]').text
        port = i.xpath('//*[@id="proxylisttable"]/tbody/tr[*]/td[2]').text
    print(ip, port, )

вот пытаюсь собрат в кучу, пытаюсь чужой код переделать на xpath
xam1816
sasholy
вот пытаюсь собрат в кучу, пытаюсь чужой код переделать на xpath

Учусь,интересно стало попробовать
 from requests_html import HTMLSession
session = HTMLSession()
response = session.get('https://free-proxy-list.net/')
r = response.html
n = 0
for txt in r.xpath('//*[@id="proxylisttable"]/tbody/tr/td[7]/text()'):
	n+=1
	if txt == "yes":
		data = r.xpath(f'//*[@id="proxylisttable"]/tbody/tr[{n}]/td[1]/text() | //*[@id="proxylisttable"]/tbody/tr[{n}]/td[2]/text()')
		ip = data[0]
		port = data[1]
		print(f'{ip}:{port}')

Выводит что-то типа:
 158.101.198.195:3128
37.152.181.36:8118
1.20.103.196:42792
118.174.220.14:43473
117.252.12.26:55443
191.242.182.132:8081
79.137.254.51:60779
103.208.200.114:23500
191.100.24.251:21776
91.211.107.204:41258
203.207.52.206:8085
Process finished with exit code 0

sasholy
xam1816
спс, есть мануалы, чем руководствовался?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB