Задать вопрос
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
  • Вопрос задан
  • 12741 просмотр
Подписаться 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽