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

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

Похожие вопросы