Есть задача выудить из переменной, в которой хранится:
<a class="cryptoSignLink linkPopUp pWidth_840" href="/bla/bla/bla/vla/list.html?Number=12345678"> </a>
12345678 - вот эти цифры мне и нужны.
Не понял как до них добраться через find и find_all.
<a class="cryptoSignLink linkPopUp pWidth_840" href="/bla/bla/bla/vla/list.html?Number=12345678"> </a>
FishHook
Сначала вам нужно как-то добраться до конкретного <a>.
<a class="cryptoSignLink linkPopUp pWidth_840" href="/bla/bla/bla/vla/list.html?Number=12345678"></a>
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]
regNumber = int(temp_regNumber.split('list.html?regNumber=')[-1].split('">\n</a>')[0])
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()
Fedor_Boberне нужен ваш код. Дайте пример HTML (минимальный!!!), скажите что хотите получить.
поэтому выложу свой код сюда.
FishHookВ смысле ссылку на страницу?
Дайте пример HTML (минимальный!!!), скажите что хотите получить.
Fedor_Boberнет, в смысле строку, содержащую HTML. Зачем мне ваша страница, чего я там не видел?
В смысле ссылку на страницу?
Fedor_BoberДа наздоровье. Мне всё равно, хоть вы весь амазон желайте распарсить.
Хочу получить с сайта закупок ссылки на страницу(ы):
Fedor_BoberМолодец, информация ценная. Но как она нас приближает к классу, имеющему два элемента и вашим трудностям, с ним связанным?
- с этой страницы собираю количество страниц и ID аукционов. И толкаю их в list.