Скрипт Python, использующий селектор lxml, xpath и css, также возвращает нулевой список - PullRequest
0 голосов
/ 16 февраля 2019

Я попытался удалить ссылку href для следующей страницы из тега html, используя xpath с lxml.Но xpath возвращает нулевой список, тогда как он был протестирован отдельно и, похоже, работает.

Я пробовал и css-селектор, и xpath, оба возвращают нулевой список.

Кодвозвращает нулевое значение, тогда как xpath, кажется, работает нормально.

import sys
import time
import urllib.request
import random
from lxml import html 
import lxml.html 
import csv,os,json
import requests
from time import sleep
from lxml import etree

username = 'username'
password = 'password'
port = port
session_id = random.random()
super_proxy_url = ('http://%s-session-%s:%s@zproxy.lum-superproxy.io:%d' %(username, session_id, password, port))
proxy_handler = urllib.request.ProxyHandler({
        'http': super_proxy_url,
        'https': super_proxy_url,})
opener = urllib.request.build_opener(proxy_handler)
opener.addheaders = \[('User-Agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36')]
print('Performing request')

page = self.opener.open("https://www.amazon.com/s/ref=lp_3564986011_pg_2/133-0918882-0523213?rh=n%3A283155%2Cn%3A%211000%2Cn%3A1%2Cn%3A173508%2Cn%3A266162%2Cn%3A3564986011&page=2&ie=UTF8&qid=1550294588").read()
pageR = requests.get("https://www.amazon.com/s/ref=lp_3564986011_pg_2/133-0918882-0523213?rh=n%3A283155%2Cn%3A%211000%2Cn%3A1%2Cn%3A173508%2Cn%3A266162%2Cn%3A3564986011&page=2&ie=UTF8&qid=1550294588",headers={"User-Agent":"Mozilla/5.0"})

doc=html.fromstring(str(pageR))

html = lxml.html.fromstring(str(page))
links = html.cssselect('#pagnNextLink')
for link in links:
        print(link.attrib['href'])

linkRef = doc.xpath("//a[@id='pagnNextLink']/@href")
print(linkRef)
for post in linkRef:
    link="https://www.amazon.com%s" % post

Я пробовал два способа здесь, и оба они, кажется, не работают.

Я использую проксисервер, для доступа к ссылкам, и это, кажется, работает, так как переменная "doc" заполняется HTML-контентом.Я проверил ссылки и на нужной странице, чтобы получить эту ссылку xpath / csslink.

xpath and css validation

1 Ответ

0 голосов
/ 16 февраля 2019

Кто-то более опытный может дать лучший совет по работе с вашей установкой, поэтому я просто укажу, что я испытал:

Когда я использовал requests Я иногда получал ссылку, а иногда нет.Если нет, то в ответе указывалось, что я проверял, что я не бот, и что мой браузер разрешил использование файлов cookie.

С селеном я надежно получил результат в своих тестах, хотя это может быть не достаточно быстро, или вариантпо другим причинампрокси (Chrome) - здесь все красиво:

https://stackoverflow.com/a/11821751/6241235

...