ValueError: как извлечь ` ` из фрейма данных? - PullRequest
0 голосов
/ 08 января 2020

Я хочу получить <a href> из этого кадра данных, но вместо этого я получаю:

ValueError: Length of values does not match length of index.

Вот как выглядит DataFrame

df.head(7)
0   <ul class="toc"> <li class="first"><a href="#d...
1   <ul class="toc"> <li><a href="#d17e906">1. LEE...
2   <ul class="toc"> <li><a href="#d17e974">2.1 Be...
3   <ul class="toc"> <li><a href="#d17e6333">3.1. ...
4   <ul class="toc"> <li><a href="#d17e23490">4.1 ...
5   <ul class="toc"> <li><a href="#d17e27196">5.1 ...
6   <ul class="toc"> <li><a href="#d17e54643">Bijl...
7   <ul class="toc"> <li><a href="#d17e55852">31. ...

Это код, который я использую.

df = pd.read_html(url)[0]
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
ul_toc = soup.find_all('ul', class_= 'toc')
links = []
for a_tag in ul_toc:
    extract= a_tag.find_all('li')
    for each in extract:
        try:
            link = each.find('a')['href']
            links.append(link)
        except:
            pass
df['Link'] = links

Я не уверен, что мне не хватает в приведенном выше коде.

1 Ответ

0 голосов
/ 08 января 2020

Я могу найти это сам.

toc_class= soup.find_all('ul', class_='toc')
df= pd.DataFrame(data= toc_class)

links = []
for a_tag in toc_class:
    extract= a_tag.find('li')
    for each in extract:
        try:
            link = each.get('href')
            links.append(link)
        except:
            pass

df['Link'] = links
df

и это вывод:



0                                                        Link
0   <ul class="toc"> <li class="first"><a href="#d...   #d17e58
1   <ul class="toc"> <li><a href="#d17e906">1. LEE...   #d17e906
2   <ul class="toc"> <li><a href="#d17e974">2.1 Be...   #d17e974
3   <ul class="toc"> <li><a href="#d17e6333">3.1. ...   #d17e6333
4   <ul class="toc"> <li><a href="#d17e23490">4.1 ...   #d17e23490
5   <ul class="toc"> <li><a href="#d17e27196">5.1 ...   #d17e27196
6   <ul class="toc"> <li><a href="#d17e54643">Bijl...   #d17e54643
7   <ul class="toc"> <li><a href="#d17e55852">31. ...   #d17e55852

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...