Home > Back-end >  How to extract all h2 texts from some URLs and store to CSV?
How to extract all h2 texts from some URLs and store to CSV?

Time:09-13

Need to extract all h2 text from some links and I tried it by using BeautifulSoup, but it didn't worked.

I also want to output them to CSV

# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup
import requests
import csv

r01 = requests.get("https://www.seikatsu110.jp/library/vermin/vr_termite/23274/") 
r02 = requests.get("https://yuko-navi.com/termite-control-subsidies")


soup_content01 = BeautifulSoup(r01.content, "html.parser")
soup_content02 = BeautifulSoup(r02.content, "html.parser")

alltxt01 = soup_content01.get_text()
alltxt02 = soup_content02.get_text()

with open('h2.csv', 'w ',newline='',encoding='utf-8') as f:
    n = 0

    for subheading01 in soup_content01.find_all('h2'):
        sh01 = subheading01.get_text()

        writer = csv.writer(f, lineterminator='\n')
        writer.writerow([n, sh01])
        n  = 1

    for subheading02 in soup_content02.find_all('h2'):
        sh02 = subheading02.get_text()

        writer = csv.writer(f, lineterminator='\n')
        writer.writerow([n, sh01, sh02])
        n  = 1
pass

expected csv output is as below:

sh01 sh02
シロアリ駆除に適用される補助金や保険は? 1章 シロアリ駆除工事に補助金はない!
シロアリ駆除の費用を補助金なしで抑える方法 2章 確定申告時に「雑損控除」申請がおすすめ
シロアリ駆除の費用ってどれくらいかかる? 3章 「雑損控除」として負担してもらえる金額
要件を満たせば加入できるシロアリ専門の保険がある? 4章 「雑損控除」の申請方法
シロアリには5年保証がある! 5章 損したくないなら信頼できる業者を選ぼう!
まとめ まとめ
この記事の監修者 ナカザワ氏について
この記事の監修者 ナカザワ氏について
シロアリ駆除のおすすめ記事
関連記事カテゴリ一覧
シロアリ駆除の記事アクセスランキング
シロアリ駆除の最新記事
カテゴリ別記事⼀覧
シロアリ駆除の業者を地域から探す
関連カテゴリから業者を探す
シロアリ駆除業者ブログ
サービスカテゴリ
生活110番とは
加盟希望・ログイン

Please somebody tell me what's wrong with this code.

CodePudding user response:

This is one way to reach your goal as stated:

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'
}

r01 = requests.get("https://www.seikatsu110.jp/library/vermin/vr_termite/23274/", headers=headers) 
r02 = requests.get("https://yuko-navi.com/termite-control-subsidies", headers=headers)

first_url_headings = [x.get_text(strip=True) for x in bs(r01.text, 'html.parser').select('h2')]
second_url_headings = [x.get_text(strip=True) for x in bs(r02.text, 'html.parser').select('h2')]

df_list = list(zip_longest(first_url_headings, second_url_headings))
df = pd.DataFrame(df_list, columns = ['First site', 'Second site'])
df.to_csv('termites_stuffs.csv')
print(df)

Result in terminal (also saved as a csv file):

First site Second site
0 シロアリ駆除に適用される補助金や保険は? 1章 シロアリ駆除工事に補助金はない!
1 シロアリ駆除の費用を補助金なしで抑える方法 2章 確定申告時に「雑損控除」申請がおすすめ
2 シロアリ駆除の費用ってどれくらいかかる? 3章 「雑損控除」として負担してもらえる金額
3 要件を満たせば加入できるシロアリ専門の保険がある? 4章 「雑損控除」の申請方法
4 シロアリには5年保証がある! 5章 損したくないなら信頼できる業者を選ぼう!
5 まとめ まとめ
6 この記事の監修者 ナカザワ氏について
7 この記事の監修者 ナカザワ氏について
8 シロアリ駆除のおすすめ記事
9 関連記事カテゴリ一覧
10 シロアリ駆除の記事アクセスランキング
11 シロアリ駆除の最新記事
12 カテゴリ別記事⼀覧
13 シロアリ駆除の業者を地域から探す
14 関連カテゴリから業者を探す
15 シロアリ駆除業者ブログ
16 サービスカテゴリ
17 生活110番とは
18 加盟希望・ログイン

Documentation for BeautifulSoup: https://beautiful-soup-4.readthedocs.io/en/latest/index.html

Also for Requests: https://requests.readthedocs.io/en/latest/

And for pandas: https://pandas.pydata.org/pandas-docs/stable/index.html

CodePudding user response:

Just in addation to approach of @Barry the Platipus with itertools, that is great. - pandas is also my favorite and there is an alternative way with native dict comprehension.

Iterate your urls and create a dict that holds number or url as key and a list of heading texts as value. These could be easily transformed to a DataFrame and exported to CSV:

d = {}
for e,url in enumerate(urls,1):
    soup = BeautifulSoup(requests.get(url).content)
    d[f'sh{e}'] = [h.get_text() for h in soup.find_all('h2')]

pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in d.items()]))#.to_csv('yourfile.csv', index = False)

Example

from bs4 import BeautifulSoup
import requests
import pandas as pd

urls = ['https://www.seikatsu110.jp/library/vermin/vr_termite/23274/','https://yuko-navi.com/termite-control-subsidies']
d = {}
for e,url in enumerate(urls,1):
    soup = BeautifulSoup(requests.get(url).content)
    d[f'sh{e}'] = [h.get_text() for h in soup.find_all('h2')]

pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in d.items()]))#.to_csv('yourfile.csv', index = False)

Output

sh1 sh2
シロアリ駆除に適用される補助金や保険は? 1章 シロアリ駆除工事に補助金はない!
シロアリ駆除の費用を補助金なしで抑える方法 2章 確定申告時に「雑損控除」申請がおすすめ
シロアリ駆除の費用ってどれくらいかかる? 3章 「雑損控除」として負担してもらえる金額
要件を満たせば加入できるシロアリ専門の保険がある? 4章 「雑損控除」の申請方法
シロアリには5年保証がある! 5章 損したくないなら信頼できる業者を選ぼう!
まとめ まとめ
この記事の監修者 ナカザワ氏について nan
この記事の監修者 ナカザワ氏について nan
シロアリ駆除のおすすめ記事 nan
関連記事カテゴリ一覧 nan
シロアリ駆除の記事アクセスランキング nan
シロアリ駆除の最新記事 nan
カテゴリ別記事⼀覧 nan
シロアリ駆除の業者を地域から探す nan
関連カテゴリから業者を探す nan
シロアリ駆除業者ブログ nan
サービスカテゴリ nan
生活110番とは nan
加盟希望・ログイン nan
  • Related