Я просматриваю веб-страницу (https://www.tandfonline.com/toc/icbi20/current), и эта страница позволяет вам перемещаться по томам, и каждый том имеет свою собственную навигацию по проблемам. У меня проблемы с получением ссылок из раздела "Навигация по проблемам".
Я хочу: # 1 получить ссылки на том, # 2 пройтись по страницам, на которые ссылки ссылаются на # 3, получить ссылки href проблемы, я могу 't:
import requests, re, time
from bs4 import BeautifulSoup, SoupStrainer
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
url_chronobiology = driver.get("https://www.tandfonline.com/toc/icbi20/current")
chronobiology_content = driver.page_source
chronobiology_soup = BeautifulSoup(chronobiology_content)
FLAGS = FLAGS = re.VERBOSE | re.DOTALL | re.IGNORECASE | re.MULTILINE
volume_tag = chronobiology_soup.select('#tocList > div > div > div.volume-container > div > div > div')
vol_href = []
for vol in volume_tag:
i = str(vol)
vol_href = re.findall(r"((?<=href=\")\/action\/\w+\?\w+\=\w+\&\w+\;\w+\=\w+\-\d{1,})", i, flags = FLAGS)
#This is because for some reason when parsing & is translated to -> & and will not make for functional url's
vol_href = ' '.join(vol_href).replace('amp;','').split()
time.sleep(8)
driver.close()
#Function for getting each Issue link for each Volume:
def search_vol(vol_link):
year_href = []
#get the volume page
vol_year = 'https://www.tandfonline.com' + str(vol_link)
#get the volume page content
driver = webdriver.Chrome()
url_vol_year = driver.get(vol_year)
chrono_content = driver.page_source
chrono_soup = BeautifulSoup(chrono_content)
#give it some time to load for the actionChains to work
time.sleep(8)
action=ActionChains(driver)
action.move_to_element(driver.find_element_by_xpath('//*[@id="tocList"]/div/div/div[3]/div[2]/div/div')).perform()
time.sleep(2)
#selects the issues and creates a list with their href links
a_tag = chrono_soup.select('#tocList > div > div > div.yearContent.open > div.issues > div > div')
print(a_tag)
for tag in a_tag:
i = str(tag)
year_href = re.findall(r"((?<=href=\")\/toc\/\w+\/\d{1,}\/\d{1,}\?\w+[=]\w+)", i, flags = FLAGS)
for a in year_href:
print(a)
time.sleep(4)
driver.close()
#Finally I iterate through every volume link:
for i in vol_href:
search_vol(i)
Это [Out]:
Я получаю:
[]
[<div class="loi-issues-scroller">
<a class="open" href="/toc/icbi20/36/12?nav=tocList">Issue<span>12</span></a>
<a class="" href="/toc/icbi20/36/11?nav=tocList">Issue<span>11</span></a>
<a class="" href="/toc/icbi20/36/10?nav=tocList">Issue<span>10</span></a>
<a class="" href="/toc/icbi20/36/9?nav=tocList">Issue<span>9</span></a>
<a class="" href="/toc/icbi20/36/8?nav=tocList">Issue<span>8</span></a>
<a class="" href="/toc/icbi20/36/7?nav=tocList">Issue<span>7</span></a>
<a class="" href="/toc/icbi20/36/6?nav=tocList">Issue<span>6</span></a>
<a class="" href="/toc/icbi20/36/5?nav=tocList">Issue<span>5</span></a>
<a class="" href="/toc/icbi20/36/4?nav=tocList">Issue<span>4</span></a>
<a class="" href="/toc/icbi20/36/3?nav=tocList">Issue<span>3</span></a>
<a class="" href="/toc/icbi20/36/2?nav=tocList">Issue<span>2</span></a>
<a class="" href="/toc/icbi20/36/1?nav=tocList">Issue<span>1</span></a>
</div>]
/toc/icbi20/36/12?nav=tocList
/toc/icbi20/36/11?nav=tocList
/toc/icbi20/36/10?nav=tocList
/toc/icbi20/36/9?nav=tocList
/toc/icbi20/36/8?nav=tocList
/toc/icbi20/36/7?nav=tocList
/toc/icbi20/36/6?nav=tocList
/toc/icbi20/36/5?nav=tocList
/toc/icbi20/36/4?nav=tocList
/toc/icbi20/36/3?nav=tocList
/toc/icbi20/36/2?nav=tocList
/toc/icbi20/36/1?nav=tocList
[<div class="loi-issues-scroller">
<a class="open" href="/toc/icbi20/35/12?nav=tocList">Issue<span>12</span></a>
<a class="" href="/toc/icbi20/35/11?nav=tocList">Issue<span>11</span></a>
<a class="" href="/toc/icbi20/35/10?nav=tocList">Issue<span>10</span></a>
<a class="" href="/toc/icbi20/35/9?nav=tocList">Issue<span>9</span></a>
<a class="" href="/toc/icbi20/35/8?nav=tocList">Issue<span>8</span></a>
<a class="" href="/toc/icbi20/35/7?nav=tocList">Issue<span>7</span></a>
<a class="" href="/toc/icbi20/35/6?nav=tocList">Issue<span>6</span></a>
<a class="" href="/toc/icbi20/35/5?nav=tocList">Issue<span>5</span></a>
<a class="" href="/toc/icbi20/35/4?nav=tocList">Issue<span>4</span></a>
<a class="" href="/toc/icbi20/35/3?nav=tocList">Issue<span>3</span></a>
<a class="" href="/toc/icbi20/35/2?nav=tocList">Issue<span>2</span></a>
<a class="" href="/toc/icbi20/35/1?nav=tocList">Issue<span>1</span></a>
</div>]
/toc/icbi20/35/12?nav=tocList
/toc/icbi20/35/11?nav=tocList
/toc/icbi20/35/10?nav=tocList
/toc/icbi20/35/9?nav=tocList
/toc/icbi20/35/8?nav=tocList
/toc/icbi20/35/7?nav=tocList
/toc/icbi20/35/6?nav=tocList
/toc/icbi20/35/5?nav=tocList
/toc/icbi20/35/4?nav=tocList
/toc/icbi20/35/3?nav=tocList
/toc/icbi20/35/2?nav=tocList
/toc/icbi20/35/1?nav=tocList
[]
[]
Когда открывается новое окно и в строке поиска написано «данные;» Я буду щелкать пустое окно, пока не появится загруженная страница, а затем еще раз щелкну пустую страницу. Если все сделано правильно, то по какой-то причине Проблема HTML станет узнаваемой по красивому супу?
Не понимаю, чего не хватает в коде или что происходит!