Задать вопрос
Arti-Jack
@Arti-Jack

Как запарсить элементы таблицы?

Имею сайт: https://www.weblancer.net/jobs/?type=project

Нужно запарсить элементы из этой таблицы (получить сведения о работе - заявки, цена и прочее). Но я не могу никак достать элементы из таблицы.

Вот мой код:
# Web-page (https://www.weblancer.net/) parser

import urllib.request
from bs4 import BeautifulSoup

def get_html(url):
response = urllib.request.urlopen(url)
return response.read()

def parse(html):
soup = BeautifulSoup(html)
table = soup.find("table", clazz="items_list")
print(table)

def main():
parse(get_html("https://www.weblancer.net/projects/"))

if __name__ == "__main__":
main()


Вообще, я правильно понял, что это нужный тэг? Просто я не нашёл таблицу.
5a11c17f11014552236657.png
  • Вопрос задан
  • 12728 просмотров
Подписаться 1 Простой 12 комментариев
Пригласить эксперта
Ответы на вопрос 2
drno-reg
@drno-reg
см не кратко
попробуйте такой пример

from bs4 import BeautifulSoup

content_table = """
<table>
    <thead>
        <th>ID</th>
        <th>Vendor</th>
        <th>Product</th>
    </thead>
    <tr>
        <td>1</td>
        <td>Intel</td>
        <td>Processor</td>
    </tr>
    <tr>
        <td>2</td>
        <td>AMD</td>
        <td>GPU</td>
    </tr>
    <tr>
        <td>3</td>
        <td>Gigabyte</td>
        <td>Mainboard</td>
    </tr>
</table>
"""

soup = BeautifulSoup(content_table, 'html.parser')
headers = {}
rows = soup.find_all("tr")
thead = soup.find("thead").find_all("th")

for i in range(len(thead)):
     headers[i] = thead[i].text.strip().lower()

data = []

for row in rows:
     cells = row.find_all("td")

item = {}

for index in headers:
     item[headers[index]] = cells[index].text
     data.append(item)

print(data)
Ответ написан
Комментировать
@Verz1Lka
Web scraping expert
Я, как адепт scrapy, порекомендую его.
Удобно работать с xpath, напримере таблицы, будет код типа:
for row in response.xpath('//table[@id="table1"]/tr'):
    item['name'] = row.xpath('./td[1]/text()').extract_first()
    yield item

P.S. Часто бывает, что увидеть вёрстку глазами скрипта нужно отключить JS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
18 янв. 2025, в 09:18
5500 руб./за проект
18 янв. 2025, в 07:20
50000 руб./за проект
18 янв. 2025, в 03:12
1000 руб./за проект