Парсинг ссылок сайта

140
15 марта 2019, 08:20

Необходимо сделать парсер внутренних ссылок на сайт. Мне нужен первые 5 ссылки который находится в ('table',id='js-mutual-table'). И записать их в файл

import requests
import bs4
from bs4 import BeautifulSoup
import json
import sys
def get_html(url):
    response = requests.get(url)
    html = response.content
    soup = BeautifulSoup(html, 'html.parser')
    return soup
def links_all(soup):
    tds = soup.find('table',id='js-mutual-table').find_all('td')
    links = []
    for td in tds:
        a = td.find(lambda tag: tag.get('href'))
        links.append(a)
    return links
def main():
    url = 'https://www.betexplorer.com/basketball/chile/lnb/ancud-osorn/bcqSOKom/'
    all_links = links_all(get_html(url))
    for i in all_links:
        print(i)
    line = [all_links]
    with open(r'C:\Users\Djok\Desktop\Проект ставка\Для ссылки\PythonApplication1\PythonApplication1\est.txt', 'w') as file:
    file.write('\n'.join(line))
if __name__ == '__main__':
    main()
Answer 1

Попробуйте так:

import lxml.html
r = requests.get(url)
tab = lxml.html.fromstring(r.content)
res = tab.xpath("//table[@id='js-mutual-table']//tr/td/a/@href")

результат:

In [166]: res
Out[166]:
['/basketball/chile/lnb/ancud-osorno/bcqSOKom/',
 '/basketball/chile/lnb/osorno-ancud/jV2gM68i/',
 '/basketball/chile/lnb-2017-2018/osorno-ancud/hnm7o9QQ/',
 '/basketball/chile/lnb-2017-2018/ancud-osorno/fiVEhKYn/',
 '/basketball/chile/lnb-2017-2018/osorno-ancud/pnDRPFtg/',
 '/basketball/chile/lnb-2017-2018/ancud-osorno/nB7sEwoh/',
 '/basketball/chile/lnb-2016-2017/osorno-ancud/Q7DkSVXO/',
 '/basketball/chile/lnb-2016-2017/ancud-osorno/2iFROnyk/',
 '/basketball/chile/lnb-2016-2017/ancud-osorno/YHANPSLr/',
 '/basketball/chile/lnb-2016-2017/osorno-ancud/tKVrXAT8/',
 '/basketball/chile/lnb-2016-2017/osorno-ancud/2TWvYjE2/',
 '/basketball/chile/lnb-2016-2017/ancud-osorno/67zCNVom/',
 '/basketball/chile/lnb-2016-2017/osorno-ancud/UNOm69aF/',
 '/basketball/chile/lnb-2016-2017/osorno-ancud/Kj2I8YK5/',
 '/basketball/chile/lnb-2016-2017/ancud-osorno/ns0fmRhS/',
 '/basketball/chile/lnb-2014-2015/osorno-ancud/QojeID7j/',
 '/basketball/chile/lnb-2014-2015/ancud-osorno/IJJQmjuo/']
In [167]: res[:5]
Out[167]:
['/basketball/chile/lnb/ancud-osorno/bcqSOKom/',
 '/basketball/chile/lnb/osorno-ancud/jV2gM68i/',
 '/basketball/chile/lnb-2017-2018/osorno-ancud/hnm7o9QQ/',
 '/basketball/chile/lnb-2017-2018/ancud-osorno/fiVEhKYn/',
 '/basketball/chile/lnb-2017-2018/osorno-ancud/pnDRPFtg/']
READ ALSO
Правильно составить post запрос

Правильно составить post запрос

помогите составить правильно post-запрос на jsЕсть сайт, на который отправляется post запрос

177
Кастомизировать MenuItem WPF

Кастомизировать MenuItem WPF

При ховере на MenuItem он приобретает не совсем привлекательный видКак менять тот же Background при ховере что бы он не был таким? Вот как он выглядит...

156
Не получается из метода сделать Task<result>

Не получается из метода сделать Task<result>

Есть метод он получает данные из базы, сохраняет их в Datatable и еще я через linq делаю отбор нужного мне количества строкНо возникает ошибка,...

137