Форум сайта python.su
0
Всех приветствую.
Есть задача выудить из переменной, в которой хранится:
<a class="cryptoSignLink linkPopUp pWidth_840" href="/bla/bla/bla/vla/list.html?Number=12345678"> </a>
Офлайн
568
Сначала вам нужно как-то добраться до конкретного <a>. Если вы знаете, как это сделать, то дальше вы просто получаете href для конкретного тега и парсите его питоном, например методом строки split.
Офлайн
0
FishHook
Сначала вам нужно как-то добраться до конкретного <a>.
<a class="cryptoSignLink linkPopUp pWidth_840" href="/bla/bla/bla/vla/list.html?Number=12345678"></a>
Отредактировано Fedor_Bober (Июль 31, 2019 11:46:42)
Офлайн
568
from bs4 import BeautifulSoup as bs html = """ <html> <body> <a class="cryptoSignLink linkPopUp pWidth_840" href="/bla/bla/bla/vla/list.html?Number=12345678"></a> </body> </html> """ soup = bs(html, "lxml") print soup.a["href"].split("=")[-1]
Офлайн
0
regNumber = int(temp_regNumber.split('list.html?regNumber=')[-1].split('">\n</a>')[0])
Офлайн
0
Не могу описать почему вылезает одна проблема, поэтому выложу свой код сюда.
Да! Код новичка. Без изысков.
При выполнении <class ‘list’> имеет два элемента. В связи с этим вопрос. Как побороть это? В какую сторону кода смотреть?
import requests from bs4 import BeautifulSoup import time import csv def get_html(url): headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'} r = requests.get(url, headers = headers) return r.text def get_total_pages(html): soup = BeautifulSoup(html, 'lxml') #pages = soup.find('ul', class_ = 'pages').find_all('li', class_ = 'page')[-1].get('href') pages = soup.find('ul', class_ = 'pages').find_all('span', class_ = 'link-text') total_pages = len(pages) #print(total_pages) return(total_pages) def get_page_data(html): soup = BeautifulSoup(html, 'lxml') ads = soup.find('div', class_ = 'parametrs margBtm10').find_all('a', class_ = 'cryptoSignLink linkPopUp pWidth_840') regNumbers = [] csv_file = open(r'zakupki.csv', 'a') for ad in ads: regNumber = str(ad).split('list.html?regNumber=')[-1].split('">\n</a>')[0] regNumbers.append(str(regNumber)) links = [] for i in regNumbers: base_url = 'http://zakupki.gov.ru/epz/order/notice/printForm/view.html?regNumber=' url_gen = base_url + str(i) links.append(url_gen) csv_file.write(url_gen + ';' + '\n') csv_file.close() #print(links) print(type(links)) print(len(links)) def main(): url = 'http://zakupki.gov.ru/epz/order/quicksearch/search.html?searchString=%D0%B4%D0%B5%D0%B7%D0%B8%D0%BD%D1%84%D0%B5%D0%BA%D1%86%D0%B8%D1%8F&morphology=on&pageNumber=1&sortDirection=false&recordsPerPage=_10&showLotsInfoHidden=false&fz44=on&fz223=on&af=on¤cyId=-1®ion_regions_5277383=region_regions_5277383®ions=5277383®ionDeleted=false&sortBy=UPDATE_DATE' base_url = 'http://zakupki.gov.ru/epz/order/quicksearch/search.html?searchString=дезинфекция&morphology=on&' page_part = "pageNumber=" query_part = "&sortDirection=false&recordsPerPage=_10&showLotsInfoHidden=false&fz44=on&fz223=on&af=on¤cyId=-1®ion_regions_5277383=region_regions_5277383®ions=5277383®ionDeleted=false&sortBy=UPDATE_DATE" total_pages = get_total_pages(get_html(url)) for i in range(1, total_pages+1): url_gen = base_url + page_part + str(i) + query_part html = get_html(url_gen) get_page_data(html) if __name__ == '__main__': main()
Офлайн
568
Fedor_Boberне нужен ваш код. Дайте пример HTML (минимальный!!!), скажите что хотите получить.
поэтому выложу свой код сюда.
Офлайн
0
FishHookВ смысле ссылку на страницу?
Дайте пример HTML (минимальный!!!), скажите что хотите получить.
Офлайн
0
Хочу получить с сайта закупок ссылки на страницу(ы):
http://zakupki.gov.ru/223/purchase/public/notification/print-form/show.html?noticeId=8414178
http://zakupki.gov.ru/epz/order/quicksearch/search.html?searchString=%D0%B4%D0%B5%D0%B7%D0%B8%D0%BD%D1%84%D0%B5%D0%BA%D1%86%D0%B8%D1%8F&morphology=on&pageNumber=1&sortDirection=false&recordsPerPage=_10&showLotsInfoHidden=false&fz44=on&fz223=on&af=on¤cyId=-1®ion_regions_5277383=region_regions_5277383®ions=5277383®ionDeleted=false&sortBy=UPDATE_DATE - с этой страницы собираю количество страниц и ID аукционов. И толкаю их в list.
Отредактировано Fedor_Bober (Авг. 1, 2019 12:53:07)
Офлайн
568
Fedor_Boberнет, в смысле строку, содержащую HTML. Зачем мне ваша страница, чего я там не видел?
В смысле ссылку на страницу?
Fedor_BoberДа наздоровье. Мне всё равно, хоть вы весь амазон желайте распарсить.
Хочу получить с сайта закупок ссылки на страницу(ы):
Fedor_BoberМолодец, информация ценная. Но как она нас приближает к классу, имеющему два элемента и вашим трудностям, с ним связанным?
- с этой страницы собираю количество страниц и ID аукционов. И толкаю их в list.
Офлайн