いつもご回答ありがとうございます。
下記のサイトでスクレイピングについて勉強しております。
https://qiita.com/taka-kawa/items/f0597b2f375da7ddbb73
import urllib.request as url_req from bs4 import BeautifulSoup from config import config, update_recent_article from slack_notification import slack_notify first_view = url_req.urlopen(config['web_info']['url']).read() soup = BeautifulSoup(first_view, "lxml") def extract_pick_up(soup=soup): """ 指定されたページのhtmlを読み込み、最新記事を抜粋してくる """ columns = soup.find_all("article", class_="post-list-item") return columns[0:13] def extract_url(column): """ columns @params: コラム コラムのurlを取得する """ column_html = BeautifulSoup(str(column), "lxml") url = column_html.find("a").get("href") return url def extract_title(column): """ columns @params: コラム コラムのタイトルを取得する """ column_html = BeautifulSoup(str(column), "lxml") title = column_html.find("h2").string return title def extract_update_article(columns): """ 更新された記事を抽出 更新前の最新の記事のindexはconfig.iniで管理 """ # 最新の記事番号を取得 recent_article = config['web_info']['recent_article'] # 更新された記事のurlを取得 article_list = [] update_start = False # 逆順に取得していき、最新記事の次からの記事のurlを取得 for column in reversed(columns): url = extract_url(column) # 記事番号取得 article_num = url.replace(config['web_info']['url']+"/", "") # タイトル取得 title = extract_title(column) # 取得すべきurl if update_start: article_list.append([title, url]) recent_article = article_num continue # 前回取得した最新の記事かどうか判定 if recent_article == article_num: update_start = True # config更新 update_recent_article(recent_article) if article_list == []: return [["更新記事はありません", "https://kintore.site"]] return article_list if __name__ == "__main__": columns = extract_pick_up() url = extract_url(columns[0]) article_list = extract_update_article(columns) slack_notify(text_="---プロたんの記事---", list_=article_list)
前回のスクレイピングで取得していない新着記事があった場合そのタイトルとURLをリストに入れてそれをスラックで通知するプログラムみたいです。
スクレイピング終了時のソースにプリント文を入れてリストの中身を表示しているのですが文字化けしてしまいます。
if __name__=="__main__": columns = extract_pick_up() url = extract_url(columns[0]) article_list = extract_update_article(columns) print str(article_list).decode('string-escape')←この行を追記したのですが文字化けします
print(article_list)を上記のように
print str(article_list).decode('string-escape')
に変更したことで『更新情報はありません』の文字化けは直りましたが、
新着記事があった場合のタイトル名は文字化けしたままです。
どなたかご回答いただけると幸いです。
よろしくお願いいたします。
文字化けを追記いたします。
[[u'100\u5747\u306e\u7b4b\u30c8\u30ec\u30b0\u30c3\u30ba\u304a\u3059\u3059\u3081TOP6\uff01\u81ea\u5b85\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u5145\u5b9f\u3055\u305b\u3088\u3046', 'https://kintore.site/14354'], [u'\u7b4b\u30c8\u30ec\u3092\u3059\u308b\u3068\u30cf\u30b2\u308b!?\u7b4b\u30c8\u30ec\u3068\u629c\u3051\u6bdb\u306e\u95a2\u4fc2\u6027\u306e\u30a6\u30bd\u30fb\u30db\u30f3\u30c8', 'https://kintore.site/14376'], [u'\u5927\u81c0\u7b4b\u306e\u304a\u3059\u3059\u3081\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\uff15\u9078\uff01\u52b9\u679c\u7684\u306a\u935b\u3048\u65b9\u306b\u3064\u3044\u3066\u89e3\u8aac', 'https://kintore.site/14347'], [u'\u7b4b\u30c8\u30ec\u306b\u30de\u30a6\u30b9\u30d4\u30fc\u30b9\uff1f\u305d\u306e\u610f\u5916\u306a\u52b9\u679c\u3068\u5931\u6557\u3057\u306a\u3044\u305f\u3081\u306e\u9078\u3073\u65b9', 'https://kintore.site/14265'], [u'\u4e0b\u534a\u8eab\u75e9\u305b\u306b\u52b9\u304f\u98df\u4e8b\u30e1\u30cb\u30e5\u30fc\u3002\u4e0b\u534a\u8eab\u592a\u308a\u306e\u539f\u56e0\u306f\u30b3\u30ec\u3060\u3063\u305f\uff01', 'https://kintore.site/14263'], [u'\u7b4b\u30c8\u30ec\u306e\u547c\u5438\u6cd5\u3092\u7a2e\u76ee\u5225\u306b\u7d39\u4ecb\uff01\u610f\u8b58\u3059\u308b\u3060\u3051\u3067\u7b4b\u30c8\u30ec\u52b9\u679c\u304c\u5927\u5e45\u30a2\u30c3\u30d7', 'https://kintore.site/14531']]
2回目を動かすと更新情報がないので下記のように表示されるのですが文字化けしていません。
[['更新情報はありませんhttps://kintore.site']]
回答1件
あなたの回答
tips
プレビュー