очистка веб-страницы с тегом привязки <a href = “##> с использованием scrapy

1

Я соскабливаю manulife

Я хочу перейти на следующую страницу, когда я проверяю "следующий", я получаю:

<span class="pagerlink">
    <a href="#" id="next" title="Go to the next page">Next</a>
</span>

Каким может быть правильный подход?

# -*- coding: utf-8 -*-
import scrapy
import json
from scrapy_splash import SplashRequest

class Manulife(scrapy.Spider):
name = 'manulife'
#allowed_domains = ['https://manulife.taleo.net/careersection/external_global/jobsearch.ftl?lang=en']
start_urls = ['https://manulife.taleo.net/careersection/external_global/jobsearch.ftl?lang=en&location=1038']

def start_requests(self):
    for url in self.start_urls:
        yield SplashRequest(
        url,
        self.parse,
        args={'wait': 5},
        )   




def parse(self, response):
    #yield {
    #   'demo' : response.css('div.absolute > span > a::text').extract()
    #     }
    urls = response.css('div.absolute > span > a::attr(href)').extract() 
    for url in urls:
        url = "https://manulife.taleo.net" + url
        yield SplashRequest(url = url, callback = self.parse_details, args={'wait': 5})
        #self.log("reaced22 : "+ url)

    #hitting next button
    #data = json.loads(response.text)
    #self.log("reached 22 : "+ data)
    #next_page_url = 

    if next_page_url:
       next_page_url = response.urljoin(next_page_url) 
       yield SplashRequest(url = next_page_url, callback = self.parse, args={'wait': 5})


def parse_details(self,response):
    yield {
           'Job post' : response.css('div.contentlinepanel > span.titlepage::text').extract(),
           'Location' : response.xpath("//span[@id = 'requisitionDescriptionInterface.ID1679.row1']/text()").extract(),
           'Organization' : response.xpath("//span[@id = 'requisitionDescriptionInterface.ID1787.row1']/text()").extract(),
           'Date posted' : response.xpath("//span[@id = 'requisitionDescriptionInterface.reqPostingDate.row1']/text()").extract(),
           'Industry': response.xpath("//span[@id = 'requisitionDescriptionInterface.ID1951.row1']/text()").extract()
          }

Как вы можете видеть, код содержит SplashRequest, когда вы нажимаете ссылку следующей страницы.

Я новичок в выскабливании, где-то я обнаружил, что веб-сайт может вернуть ответ как json. Я попробовал, но это дает мне ошибку, что "объект json не может быть декодирован"

  • 0
    Я попробовал это, используя scrapy-splash, но безрезультатно.
  • 1
    Scrapy не может интерпретировать JavaScript, используйте селен для таких вещей.
Показать ещё 6 комментариев
Теги:
web-scraping
scrapy
scrapy-splash

1 ответ

0

Я думаю, используя css selector ".pagerlink a[title='Go to the next page']" как это могло бы работать.

Но ".pagerlink:last-child a" будет лучшим подходом imo. Вам просто нужно получить атрибут href

  • 0
    Это просто дает якорный тег, который содержит «#». Так что это не полезно. : /

Ещё вопросы

Сообщество Overcoder
Наверх
Меню