BS4 не могу найти текст - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь напечатать этот текст https://i.imgur.com/SLl1URt.png Я использовал "soup.find_all (" p ", class _ =" review ")" и попытался использовать .getText или проверить внутри .contents, но ни один из них не сработал

веб-ссылка https://m.wuxiaworld.co/Castle-of-Black-Iron/

вот некоторая отладочная информация https://i.imgur.com/0k6NHeD.png

import urllib2
from bs4 import BeautifulSoup

def info(novelname):
    user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
    url = "https://m.wuxiaworld.co/"+novelname+"/"
    headers={'User-Agent':user_agent,'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
       'Accept-Encoding': 'none',
       'Accept-Language': 'en-US,en;q=0.8',
       'Connection': 'keep-alive'}
    request = urllib2.Request(url, headers=headers)
    response = urllib2.urlopen(request)
    soup = BeautifulSoup(response, features="html.parser")
    for textp in soup.find_all("p", class_="review"):
        print textp.contents
        print textp
        print textp.getText()

Ответы [ 2 ]

0 голосов
/ 17 июня 2019
import requests
from bs4 import BeautifulSoup
from collections import OrderedDict

def info(novelname):        
    response = requests.get(
        'https://m.wuxiaworld.co/{}/'.format(novelname.replace(' ', '-')),
        headers=OrderedDict(
            (
                ("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"),
                ("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"),
                ("Accept-Language", "en-US,en;q=0.5"),
                ("Accept-Encoding", "gzip, deflate"),
                ("Connection", "keep-alive"), 
                ("Upgrade-Insecure-Requests", "1")
            )
        )
    )

    if response.status_code == 200:
        soup = BeautifulSoup(response.content, 'html5lib')

        for textp in soup.find_all('p', attrs={'class': 'review'}):
            print textp.text.strip()

info('Castle of Black Iron')

Проблема в том, что ваш html-парсер ... использование html5lib дает нам

Description

After the Catastrophe, every rule in the world was rewritten.

In the Age of Black Iron, steel, iron, steam engines and fighting force became the crux in which human beings depended on to survive.

A commoner boy by the name Zhang Tie was selected by the gods of fortune and was gifted a small tree which could constantly produce various marvelous fruits. At the same time, Zhang Tie was thrown into the flames of war, a three-hundred-year war between the humans and monsters on the vacant continent. Using crystals to tap into the potentials of the human body, one must cultivate to become stronger.

The thrilling legends of mysterious clans, secrets of Oriental fantasies, numerous treasures and legacies in the underground world — All in the Castle of Black Iron!

Citadel of Black Iron
黑铁之堡
0 голосов
/ 17 июня 2019

Когда вы печатаете свой суп, вы увидите некоторые html-теги в терминале (не во всех источниках). Я думаю, что веб-сайт скрывает некоторую часть данных. Поэтому я рекомендую использовать Selenium. Если вы еще не загрузили, вы можете установить на:

https://chromedriver.storage.googleapis.com/index.html?path=2.35/

Весь код:

from selenium import webdriver

driver_path = r'your driver path'
browser = webdriver.Chrome(executable_path=driver_path)


browser.get("https://m.wuxiaworld.co/Castle-of-Black-Iron/")

x = browser.find_elements_by_css_selector("p[class='review']") ## Declare which class
for text1 in x:
    print text1.text
browser.close()

ВЫХОД:

Описание После Катастрофы все правила в мире были переписаны. В век черного железа, стали, железа, паровых двигателей и боевой силы стал сутью, в которой люди выживали. простой мальчик по имени Чжан Ти был выбран богами удачи и был подарен небольшое дерево, которое могло постоянно производить различные изумительные фрукты. В то же время, Чжан Ти был брошен в пламя войны, трехсотлетняя война между людьми и монстры на пустынном континенте. Используя кристаллы, чтобы подключиться к Потенциалы человеческого тела нужно развивать, чтобы стать сильнее. Захватывающие легенды таинственных кланов, тайны Востока фантазии, многочисленные сокровища и наследие в подземном мире - Все в замке черного железа! Цитадель Черного Железа 黑铁 之 堡

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