単純にprettify()
でもって文字列に変換した後、re.sub()
やreplace()
ですれば良いと思ったのですが、prettify()
してしまうと中身が変わってしまうようで、ちょっと困ったことになりました。
とあるサイトから1ページのコンテンツ部分をまるごと取ってきて、その中のimg
タグのsrc
属性の値を取得し、urlretrieve()
にて、画像をファイル名で保存します。(パスとファイル名を切り分けます。)
その後、取得したコンテンツの中から、先程使ったsrc
属性の値(URL)に一致するものを探し、保存したときのファイル名を使ってsrc="./image.png"
のように書き換えたいのですが、ここで困ったことになりました。
prettify()
した文字列型のhtml文章にre.sub()
を使用して置換しようとしたのですが、何故かre.search()
等でurlを検索してもNone
が返るものが出てきてしまいます。
画像取得するときはURL見つかるのに(BeautifulSoupのメソッド使用)、html上でURLが見つからない(Pythonのre使用)とは一体・・・
prettify()
したせい・・・ですか?
いろいろ省略してますが、以下の様なことがしたいです。
python
1html = urlopen("URL") 2soup = BeautifulSoup(html, 'lxml') 3imgs = soup.find_all('img') 4str_html = soup.prettify() 5 6for img in imgs: 7 file_name = # 画像を取得してファイル名をfile_nameに入れる 8 str_html = re.sub(img['src'], './' + file_name, str_html)
上記コードだと幾つかのurlが見つからないために置換されません。
見つからないのはprettify()
したせいだとすると、prettify()
する前のBeautifulSoup型?のままで置換をするしか無いですか?
そうだとしたら、属性の値を書き換えるメソッドなどはあるんでしょうか。
調べてみても、テキスト部分の書き換えしか出てきませんでした。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/30 09:26