

サイトをスクレイピングしてURLリストを作成するコードと、個別サイトの属性のみをスクレイピングするコードが実現できています。

URLリストには個別サイトのURLが記載されているのですが、URLリストのURLに順番に接続しそれぞれスクレイピングするにはどの様にすればよろしいでしょうか？お知恵をお貸しください。よろしくお願いいたします。

・URLを取得するコード

[code]

    import requests, bs4
    import codecs
    import re
    
    res = requests.get('https://****')
    res.raise_for_status()
    
    soup = bs4.BeautifulSoup(res.text, "html.parser")
    
    elems = soup.select('.threadUrlInMetrics')
    
    for elem in elems:
     with open("abcd.txt", "w") as f:
        print(elems, file=f) 
        file = r'abcd.txt'
    with open(file) as f:  
        url_list = f.read()
    pattern = "https?://[\w/:%#\$&\?\(\)~\.=\+\-]+"
    text = url_list
    url_list = re.findall(pattern, text)
    print(url_list)
    
[/code]

・個別のサイトをスクレイピングするコード

[code]

    import requests, bs4
    res = requests.get('https://***')
    res.raise_for_status()
    soup = bs4.BeautifulSoup(res.text, "html.parser")
    elems = soup.select('.container')
    for elem in elems:
        print(elem)
    
[/code]


CC BY-SA 4.0
2020-03-04T17:40:39.797
63572
2021-12-24T08:02:00.253
2020-03-05T01:12:39.933
3060
38077
question
python python3 web-scraping
URLリストからそれぞれのサイトをスクレイピングする方法


@kunif さんのコメントにある通り、`url_list` に対するfor ループで良いのではないでしょうか

[code]

    # URLを取得するコード
    # ...
    url_list = re.findall(pattern, text)
    
    
    # 個別のサイトをスクレイピングするコード
    import requests, bs4
    
    for url in url_list :
        res = requests.get(url)
        res.raise_for_status()
        soup = bs4.BeautifulSoup(res.text, "html.parser")
        elems = soup.select('.container')
        for elem in elems:
            print(elem)
    
[/code]


CC BY-SA 4.0
2020-03-26T14:18:46.930
64135
2020-03-26T14:18:46.930
35754
63572
answer