Итак, я хотел бы получить список ссылок для скачивания со страницы:
soup = BeautifulSoup(driver.page_source)
linky=soup.find_all(name='a', href=re.compile('download.php'))
Это возвращает мне список всех ссылок:
[<a href = "download.php/947983/adam.zip"><img " = "" alt = "Download" src = "browse_dl.png" style = "style = " title = "Download Adam"/></a>,
<a href = "download.php/947981/barb.zip"><img " = "" alt = "Download" src = "browse_dl.png" style = "style = " title = "Download Barb"/></a>,
<a href = "download.php/947972/chris.zip"><img " = "" alt = "Download" src = "browse_dl.png" style = "style = " title = "Download Chris"/></a>,
<a href = "download.php/947971/dan.zip"><img " = "" alt = "Download" src = "browse_dl.png" style = "style = " title = "Download Dan"/></a>]
Я хотел бы извлечь ссылку href и заголовок img после «Загрузить», а затем поместить их в кортежи.
Итак, у меня был бы список вроде следующего:
[(download.php/947983/adam.zip, Adam)
(download.php/947981/barb.zip, Barb),
(download.php/947972/chris.zip, Chris),
(download.php/947971/dan.zip, Dan)]
Я думал, что могу просто разделить текст между href = "и" img для каждого элемента, но тогда я бы не знал, как это сделать, и следующая проблема заключается в том, как мне также извлечь заголовок?
Вот решение вашей проблемы, допустим, у нас есть list_of_names, содержащий ваши входные ссылки и имена, которые вы хотите извлечь, затем ссылки и имена можно извлечь с помощью кода, приведенного ниже:
#!/usr/bin/python
import re
list_of_names= ['<a href = "download.php/947983/adam.zip"><img " = "" alt = "Download" src = "browse_dl.png" style = "style = " title = "Download Adam"/></a>',
'<a href = "download.php/947981/barb.zip"><img " = "" alt = "Download" src = "browse_dl.png" style = "style = " title = "Download Barb"/></a>',
'<a href = "download.php/947972/chris.zip"><img " = "" alt = "Download" src = "browse_dl.png" style = "style = " title = "Download Chris"/></a>',
'<a href = "download.php/947971/dan.zip"><img " = "" alt = "Download" src = "browse_dl.png" style = "style = " title = "Download Dan"/></a>']
links=[]
names=[]
for row in list_of_names:
links.append([x.strip() for x in re.split(r"href=\"(.*)\"><img", row)][1])
names.append([x.strip() for x in re.split(r"title=\"Download (.*)\"/>", row)][1])
desired_list=list(tuple(zip(links,names)))
print(desired_list)
Если вы скомпилируете этот скрипт, вы сможете получить желаемый результат:
python -i code_for_desired_output.py
[('download.php/947983/adam.zip', 'Adam'), ('download.php/947981/barb.zip', 'Barb'), ('download.php/947972/chris.zip', 'Chris'), ('download.php/947971/dan.zip', 'Dan')]
Затем вы должны принять его, установив галочку напротив ответа.
Это ответ. Спасибо!