Ошибка при создании основного веб-сканера - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь запустить следующий код для web crawling.

import requests
from bs4 import BeautifulSoup

def function1():
    url = "http://www.iitg.ac.in/"
    source_code  = requests.get(url)
    plain_text = source_code.text
    soup = BeautifulSoup(plain_text)
    for link in soup.findALL('a', {'target' : '_blank'} ):
        href = link.get(href)
        print(href)

function1()    

, но он показывает следующую ошибку:

File "C:/Users/HP/.spyder-py3/temp.py", line 9, in function1
    for link in soup.findALL('a', {'target' : '_blank'}):

TypeError: 'NoneType' object is not callable

Я также проверил ее решение на этомПлатформа уже есть, но, согласно этому, внутри функции findALL, похоже, нет вызываемого объекта.Пожалуйста помоги.

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Функция «Найти все» чувствительна к регистру, либо используйте soup.find_all() или soup.findAll().

В противном случае soup.findALL возвращает None, а затем вы пытаетесь вызвать его ..

0 голосов
/ 24 июля 2018

Ваш URL не работает для меня.Хотите распечатать все элементы HREF с URL?Попробуйте приведенный ниже пример сценария.

import lxml.html
doc = lxml.html.parse('http://www.gpsbasecamp.com/national-parks')
links = doc.xpath('//a[@href]')
for link in links:
    print(link.attrib['href'])

Результат:

/contact-gpsbasecamp.php
/privacy-policy.php
/terms-of-service.php
/
                                National-Parks/map
/National-Historic-Parks
/National-Historic-Sites
/National-Monuments
/Other-NPS-Facilities
national-parks/Acadia_National_Park
national-parks/Arches_National_Park
national-parks/Badlands_National_Park
national-parks/Big_Bend_National_Park
national-parks/Biscayne_National_Park
national-parks/Black_Canyon_Of_The_Gunnison_National_Park
etc., etc., etc.
0 голосов
/ 21 мая 2018

Возможно, на этой странице нет элемента a с target="_blank".Вы можете сделать if, чтобы гарантировать, что будете повторять только, если findAll что-то вернул.

def function1():
    url = "http://www.iitg.ac.in/"
    source_code  = requests.get(url)
    plain_text = source_code.text
    soup = BeautifulSoup(plain_text)
    links = soup.findAll('a', {'target' : '_blank'} )

    if links:
        for link in links:
            href = link.get(href)
            print(href)
    else:
        print('No links found in page!')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...