Extracting h2 and h3 elements from some links to csv

Question:

I want to extract h2 and h3 from some links to csv.

I’ve tried this,but it dosen’t work as I expected.
Script I tried is as below:

# https://stackoverflow.com/questions/73700350/how-to-extract-all-h2-texts-from-some-urls-and-store-to-csv/73702347#73702347

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
from itertools import zip_longest

headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Safari/537.36'
}

# request
r01 = requests.get("https://www.epson.jp/products/bizprojector/knowhow/referral.htm",headers=headers)
r02 = requests.get("https://www.sharing-tech.co.jp/shiroari/news/605523-2/",headers=headers)

# Extracting h2&h3
first_url_h2 = []
for x in bs(r01.text, 'html.parser').select('h2'):
    first_url_h2.append(x.get_text(strip=True))
    print('h2:',x.text)

    for y in bs(r01.text, 'html.parser').select('h3'):
        first_url_h2.append(y.get_text(strip=True))
        print('h3:',y.text)

# Extracting h2&h3
second_url_h2 = []
for x in bs(r02.text, 'html.parser').select('h2'):
    second_url_h2.append(x.get_text(strip=True))
    print('h2:',x.text)

    for y in bs(r02.text, 'html.parser').select('h3'):
        second_url_h2.append(y.get_text(strip=True))
        print('h3:',y.text)


df_list = list(zip_longest(first_url_h2, second_url_h2))
df = pd.DataFrame(df_list, columns = ['First URL H2', 'Second URL H2'])

df.to_csv('h2_scrayping_test.csv')
print(df)

I want csv as below:

first_url_h2 second_url_h2
h1:1章 シロアリ駆除工事に補助金はない! h1:シロアリ駆除は補助金の対象外
h1:2章 確定申告時に「雑損控除」申請がおすすめ h2:助成金も使えません
h1:3章 「雑損控除」として負担してもらえる金額 h1:シロアリ被害に使える保険もほとんどない
h1:4章 「雑損控除」の申請方法 h2:住宅の損害やシロアリ被害に関する3つの保険
h2:4-1 条件・必要書類 h2:火災保険が適用されるのは非常にまれ
h2:4-2 申請の流れ h1:シロアリ被害に使える保険もほとんどない

Current output csv is like this:

first_url_h2 second_url_h2
0 リファラル採用ã¨ã¯ï¼Ÿå°Žå…¥ã®ãƒ¡ãƒªãƒƒãƒˆãƒ»ãƒ‡ãƒ¡ãƒªãƒƒãƒˆã‚’ã”紹介 シロアリ駆除の補助金はないけど費用をグッと抑えられる確定申告の手順
1 ・リファラル採用ã¨ç¸æ•…採用ã®é•ã„ã¯ï¼Ÿ 助成金も使えません
2 ・採用コストã®å‰Šæ¸› 住宅の損害やシロアリ被害に関する3つの保険
3 ・ç†æƒ³ã¨ã™ã‚‹äººæã¨ãƒžãƒƒãƒãƒ³ã‚°ã§ãã‚‹ 火災保険が適用されるのは非常にまれ
4 ・自社ã®æ”¹å–„点ãŒæµ®ã彫りã«ãªã‚‹ 雑損控除を受けるための条件

csv:https://docs.google.com/spreadsheets/d/1gIU9dz7czGEHEcsRrzba2egEsuOlKTYoNmcqc_1h4PI/edit#gid=1896547765

Asked By: hafuuu

||

Answers:

You have to invoke .content instead of .text

Code:

import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
from itertools import zip_longest

headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Safari/537.36'
}

# request
r01 = requests.get("https://www.epson.jp/products/bizprojector/knowhow/referral.htm",headers=headers)
r02 = requests.get("https://www.sharing-tech.co.jp/shiroari/news/605523-2/",headers=headers)

# Extracting h2&h3
first_url_h2_h3 = []
soup= bs(r01.content, 'html.parser')
for x in soup.find_all(['h2', 'h3']):
    first_url_h2_h3.append(x.text.strip())
    

second_url_h2_h3 = []
soup= bs(r02.content, 'html5lib')
for x in soup.find_all(['h2', 'h3']):
    second_url_h2_h3.append(x.text.strip())


df_list = list(zip_longest(first_url_h2_h3, second_url_h2_h3))
df = pd.DataFrame(df_list, columns = ['First URL H2', 'Second URL H2'])

df.to_csv('h2_scrayping_test.csv',index=False)
print(df)

Output:

                First URL H2                      Second URL H2
0   リファラル採用とは?導入のメリット・デメリットをご紹介  シロアリ駆除の補助金はないけど費用をグッと抑えられる確定
申告の手順
1                    リファラル採用とは?                     シロアリ駆除は補助金の対象外
2            ・リファラル採用と縁故採用の違いは?                          助成金も使えません
3                  リファラル採用のメリット                シロアリ被害に使える保険もほとんどない
4                     ・採用コストの削減              住宅の損害やシロアリ被害に関する3つの保険
5             ・理想とする人材とマッチングできる                  火災保険が適用されるのは非常にまれ
6               ・自社の改善点が浮き彫りになる                 シロアリ駆除費用を抑えるなら雑損控除
7                 リファラル採用のデメリット                      雑損控除を受けるための条件
8            ・採用(内定承諾)までに時間がかかる                              申請の方法
9               ・温度感にギャップがある可能性                           控除額の計算方法
10                 中途採用とのコストの比較                シロアリ駆除費用を浮かせるその他の方法
11            リファラル採用を成功させるプロセス                            新築物件の場合
12                ・リファラル採用制度の認知                            賃貸物件の場合
13                        ・動機づけ                            中古物件の場合
14                          ・行動                   施工は保証のある業者に依頼しよう
15             リファラル採用を促進するポイント                              運営元情報
16               ・友人を呼ぶハードルを下げる                        記事の編集方針について
17                  ・協力者への感謝と賞賛                          シロアリの基礎知識
18                         おわりに        誰でもシロアリを見分けられるようになる!特徴・違...
19                         None        【完全版】自分でシロアリ駆除をプロのように仕上げ...
20                         None        シロアリ予防は自分でできる!依頼するより約【13...
21                         None                         よく読まれている記事
Answered By: Fazlul

How can I add character "h2" and "h3" to the beginning to each element?
like this:

first_url_h2 second_url_h2
h2:1章 シロアリ駆除工事に補助金はない! h2:シロアリ駆除は補助金の対象外
h2:2章 確定申告時に「雑損控除」申請がおすすめ h3:助成金も使えません
h2:3章 「雑損控除」として負担してもらえる金額 h2:シロアリ被害に使える保険もほとんどない
h2:4章 「雑損控除」の申請方法 h3:住宅の損害やシロアリ被害に関する3つの保険
h3:4-1 条件・必要書類 h3:火災保険が適用されるのは非常にまれ
h3:4-2 申請の流れ h2:シロアリ被害に使える保険もほとんどない
Answered By: hafuuu
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.