У меня есть веб-сайт https://www.medline.com/catalog/category-products.jsp?No=0&itemId=Z05-CA11_07_03&N=104048&iclp=Z05-CA11_07_03, который я буду сканировать sh.
https://www.medline.com/catalog/category-products.jsp?No=0&itemId=Z05-CA11_07_03&N=104048&iclp=Z05-CA11_07_03
Мне нужно go на ссылку каждого продукта, xpath которого задается как:
//div[@class='medGridProdTitle']//a
Я написал следующий фрагмент кода, чтобы получить все эти ссылки. Но для всех он возвращает none. Я знаю, что не включил a в тег, и это создает проблемы, но я не знаю, как я могу это сделать.
none
a
import requests import xlsxwriter from bs4 import BeautifulSoup def cpap_spider(max_pages): global row_i page=0 while page<=max_pages: url= "https://www.medline.com/catalog/category-products.jsp?No="+str(page)+"&itemId=Z05-CA11_07_03&N=104048&iclp=Z05-CA11_07_03" source_code= requests.get(url) plain_text= source_code.text soup= BeautifulSoup(plain_text, 'html.parser') for link in soup.findAll("div", {"class":"medGridProdTitle"}): href=link.get("href") title = link.string print(href) #print(title) page+=12 cpap_spider(156)
Любая помощь по этому поводу будет принята с благодарностью.
Так что вам просто нужно немного изменить способ нахождения href. Вот пример
import requests from bs4 import BeautifulSoup def cpap_spider(max_pages): global row_i page=0 while page<=max_pages: url= "https://www.medline.com/catalog/category-products.jsp?No="+str(page)+"&itemId=Z05-CA11_07_03&N=104048&iclp=Z05-CA11_07_03" source_code= requests.get(url) plain_text= source_code.text soup= BeautifulSoup(plain_text, 'html.parser') links = soup.findAll("div", {"class":"medGridProdTitle"}) for link in links: print(link.find('a')['href']) # this is the line you have to change. page+=12 cpap_spider(156)
Попробуйте:
def cpap_spider(max_pages): global row_i page=0 while page<=max_pages: url= "https://www.medline.com/catalog/category-products.jsp?No="+str(page)+"&itemId=Z05-CA11_07_03&N=104048&iclp=Z05-CA11_07_03" source_code= requests.get(url) plain_text= source_code.text soup= BeautifulSoup(plain_text, 'lxml') for link in soup.findAll("div", {"class":"medGridProdTitle"}): href = link.find("a")['href'] print(href) page+=12
угадайте, что это именно то, что вы ищете, вам следует заменить get на find и там, после индексации тегов a, получить их href
get
find
href
import requests from bs4 import BeautifulSoup def cpap_spider(max_pages): global row_i page = 0 while page <= max_pages: url = "https://www.medline.com/catalog/category-products.jsp?No=" + str( page) + "&itemId=Z05-CA11_07_03&N=104048&iclp=Z05-CA11_07_03" source_code = requests.get(url) plain_text = source_code.text soup = BeautifulSoup(plain_text, 'html.parser') for link in soup.findAll("div", {"class": "medGridProdTitle"}): href = link.find("a")['href'] print(href) title = link.string # print(href) # print(title) page += 12 cpap_spider(156)