Сегодня я решил немного переписать парсер и сделать вывод как в оригинале с шапкой сверху.
Для этого нужно заглянуть в код шапки. Как видно шапка заключена в тег 'thead'
Также есть теги 'tr' и 'th'
Соответственно нужно создать для шапки отдельную переменную head.
Теперь напишем для шапки отдельный цикл и на этот раз данные мы разместим не в словаре, а в кортеже
Если сейчас вывести на печать, получим такой результат
Наша конструкция сработала, шапка есть. Но присутствуют скобки и кавычки. От них легко избавиться, если печать вывести таким образом
Теперь данные получились чистыми
Наведёт окончательную красоту - результат скопируем в EXCEL, также сначала распределим по столбцам. И чтобы шапочку всегда было видно, нужно её закрепить.
Готово! Теперь, если мы прокрутим в самый низ, то всё равно шапка будет оставаться на месте.
Надеюсь, вы что-то узнали для себя нового 
Для этого нужно заглянуть в код шапки. Как видно шапка заключена в тег 'thead'
Также есть теги 'tr' и 'th'
Соответственно нужно создать для шапки отдельную переменную head.
Python:
head = soup.find('thead').find_all('tr')
Теперь напишем для шапки отдельный цикл и на этот раз данные мы разместим не в словаре, а в кортеже
Python:
for tr in head:
th = tr.find_all('th')
ip1 = th[1].text
port1 = th[2].text
country1 = th[3].text.replace('\xa0', '')
anonym1 = th[4].text.replace('\r\n ', '')
types1 = th[5].text.replace('\r\n\t\t\t\t\t', '').replace('\r\n ', '')
time1 = th[6].text
data1 = (ip1, port1, country1, anonym1, types1, time1)
Если сейчас вывести на печать, получим такой результат
Наша конструкция сработала, шапка есть. Но присутствуют скобки и кавычки. От них легко избавиться, если печать вывести таким образом
Python:
print(", ".join([str(s) for s in data1]))
Теперь данные получились чистыми
Наведёт окончательную красоту - результат скопируем в EXCEL, также сначала распределим по столбцам. И чтобы шапочку всегда было видно, нужно её закрепить.
Готово! Теперь, если мы прокрутим в самый низ, то всё равно шапка будет оставаться на месте.
Python:
import requests
from bs4 import BeautifulSoup
def get_html(site):
r = requests.get(site)
return r.text
def get_page_data(html):
soup = BeautifulSoup(html, 'lxml')
head = soup.find('thead').find_all('tr')
line = soup.find('table', id='theProxyList').find('tbody').find_all('tr')
for tr in head:
th = tr.find_all('th')
ip1 = th[1].text
port1 = th[2].text
country1 = th[3].text.replace('\xa0', '')
anonym1 = th[4].text.replace('\r\n ', '')
types1 = th[5].text.replace('\r\n\t\t\t\t\t', '').replace('\r\n ', '')
time1 = th[6].text
data1 = (ip1, port1, country1, anonym1, types1, time1)
print(", ".join([str(s) for s in data1]))
for tr in line:
td = tr.find_all('td')
ip = td[1].text
port = td[2].text
country = td[3].text.replace('\xa0', '')
anonym = td[4].text.replace('\r\n ', '')
types = td[5].text.replace('\r\n\t\t\t\t\t', '').replace('\r\n ', '')
time = td[6].text
data = (ip, port, country, anonym, types, time)
print(", ".join([str(s) for s in data]))
def main():
url = 'http://foxtools.ru/Proxy'
get_page_data(get_html(url))
if __name__ == '__main__':
main()
Комментарии
8