Как я могу распечатать веб-текст в одну строку? - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь собрать информацию об отслеживании на сайте грузоотправителя с помощью Beautifulsoup. Тем не менее, формат HTML не способствует тому, что я пытаюсь сделать. В исходном тексте есть лишние пробелы, которые загромождают мой вывод. В идеале я хотел бы просто взять здесь дату, но я возьму «Отправлено» и дату в этой точке, если она находится на одной строке.

Я пытался использовать. replace(" ","") & .strip() безуспешно.

Python Script:

from bs4 import BeautifulSoup
import requests

TrackList = ["658744424"]


for TrackNum in TrackList:
    source = requests.get('https://track.xpoweb.com/en-us/ltl-shipment/'+TrackNum+"/").text
    soup = BeautifulSoup(source, 'lxml')
    ShipDate = soup.find('p', class_="Track-meter-itemLabel text--center").text
    print(ShipDate)

HTML Исходный код:

<p class="Track-meter-itemLabel text--center">
<strong class="text--bold">
                          Shipped
                        </strong>
                        5/23/2019
                      </p>

Это то, что возвращается. Дополнительные пробелы и пустые строки.

                      Shipped

                    5/23/2019

Ответы [ 3 ]

0 голосов
/ 02 июня 2019

Вы ищете генератор stripped_strings, который уже встроен в BeautifulSoup, но он не является общеизвестным.

### Your code

for ShipDate in soup.find('p', class_="Track-meter-itemLabel text--center").stripped_strings:
    print(ShipDate)

Выход:

Shipped
5/23/2019
0 голосов
/ 03 июня 2019

Используйте регулярное выражение

from bs4 import BeautifulSoup
import requests
import re

TrackList = ["658744424"]

for TrackNum in TrackList:
    source = requests.get('https://track.xpoweb.com/en-us/ltl-shipment/'+TrackNum+"/").text
    soup = BeautifulSoup(source, 'lxml')
    print(' '.join(re.sub(r'\s+',' ', soup.select_one('.Track-meter-itemLabel').text.strip()).split('\n')))
0 голосов
/ 02 июня 2019

Попробуйте:

trac = [your html code above]
soup = BeautifulSoup(trac, "lxml")
soup.text.replace(' ','').replace('\n',' ').strip()

Вывод:

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