перебрасывать веб-страницу с помощью scrapy не возвращает содержимое страницы - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь очистить веб-страницу с scrapy Я заметил, что это не сработает, когда я проанализировал веб-страницу, бросив мою оболочку ipython, она вернула следующее:

'دانلود کتاب و کتاب صوتی با طاقچه\n        // more info: http://angulartics.github.io/\n        (function (i, s, o, g, r, a, m) {\n            i[\'GoogleAnalyticsObject\'] = r; i[r] = i[r] || function () {\n                (i[r].q = i[r].q || []).push(arguments)\n            }, i[r].l = 1 * new Date(); a = s.createElement(o),\n                m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)\n        })(window, document, \'script\', \'//www.google-analytics.com/analytics.js\', \'ga\');\n        ga(\'create\', \'UA-57199074-1\', { \'cookieDomain\': location.hostname == \'localhost\' ? \'none\' : \'auto\' });\n        ga(\'require\', \'ec\');\n    Taaghche works best with JavaScript enabled{ "@context": "http://schema.org", "@type": "WebSite", "url": "https://taaghche.ir/", "name": "طاقچه", "alternateName": "نزدیکترین کتاب فروشی شهر", "potentialAction": { "@type": "SearchAction", "target": "https://taaghche.ir/search?term={search_term_string}", "query-input": "required name=search_term_string" } }{ "@context": "http://schema.org", "@type": "Organization", "url": "https://taaghche.ir", "logo": "https://taaghche.ir/assets/images/taaghchebrand.png", "contactPoint": [{ "@type": "ContactPoint", "telephone": "+۹۸-۲۱-۸۸۱۴۹۸۱۶", "contacttype": "customer support", "areaServed": "IR" }] }'

больше похоже на ответ json. как я могу выбросить его? кстати мой скребок выглядит так:

class Taaghche(scrapy.Spider):
name='taaghche'
def start_requests(self):
    urls = []

    link = 'https://taaghche.ir/search?term='

    data = pd.read_csv('books.csv')
    titles = data.title
    for title in titles:
        key = title.replace(" ", "%20")
        urls.append(link+key)

    for url in urls:
        yield scrapy.Request(url=url, callback=self.parse_front)


def parse_front(self,response):
    booklinks = response.xpath('//a[@class="book-link"][1]/@href').extract_first()
    #print(booklinks)
    #for booklink in booklinks:
    yield response.follow(url =booklinks, callback=self.parse_page)

def parse_page(self,response):
...

1 Ответ

1 голос
/ 11 марта 2019

Содержимое сайта не отображается на стороне сервера. Содержимое сайта отображается с помощью JavaScript:

В этом случае вам нужно использовать либо.

  • Селен (объединение Селен с помощью скрапа)

  • Проверьте URL запроса на вкладке сети. Может быть URL-адрес API, и вы можете получить данные из URL.

Могут быть и другие возможные решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...