すべての人気作品、タイトル、コンテンツリンク、面白い数、コメント数をクロールembarrassments百科事典
#のコーディング= UTF-8 から lxmlのインポートetree インポート要求 インポートのJSON クラス:QiubaiSpider デフ __init__ (自己): self.url_temp = " https://www.qiushibaike.com/8hr/page/{}/ " self.header = { " ユーザエージェント":" はMozilla / 5.0(Windows NTの10.0; Win64の、x64)のクローム/ 76.0.3809.100サファリ/ 537.36のAppleWebKit / 537.36(ヤモリ様KHTMLは、)" } DEF (自己)get_url_list: url_list = [自己。 url_temp.format(I)についてI における範囲(1,14 )] 戻りurl_listの デフでもparse_url(自己、URL): プリント(" 正在爬取:" 、URL) 応答 = requests.get(URL、ヘッダー= self.header) 戻りresponse.content.decode () DEF get_content_list(自己、html_str): HTML = etree.HTML(html_str) #1分组 div_list = html.xpath(" // divの[@クラス= 'お勧めします-記事を'] //李" ) content_list = [ ] のためのdivでdiv_list: アイテム = {} アイテム[ " 作者名" ] = div.xpath(" .//スパン/テキスト()クラス= 'recmd名' @] ")[0] 場合でlen(div.xpath(" .//スパン[@クラス= 'recmd名'] /テキスト()"))> 0 他なし のアイテム[ " 标题" ] = div.xpath(" .//a[@class='recmd-content '] /テキスト()" ) 項目[ " 内容链接" ] = div.xpath(" .//a[@class='recmd-content'] / @ hrefの" ) アイテム[" コンテンツリンク" ] = ' https://www.qiushibaike.com ' +アイテムの[ " コンテンツリンク" ] [0] のIF([項目lenは、 " コンテンツリンク" ])> 0 それ以外なし [項目" 面白い番号" ] div.xpath =(" .// divの[クラス@ = 'recmd-NUM'] /スパン/テキスト()" ) 項目[ " 面白い番号" ] = [項目" 面白い番号" ] [0] のIFでlen(項目[ " 面白い番号" ])>0 他なし 項目[ " 评论" ] = div.xpath(" .// divの[クラス@ = 'recmd-NUM'] /スパン/テキスト()")[ - 2 ] #の項目[ "评论"] =項目の[」评论"] [3] lenの場合(項目["评论"])>それ以外0なし content_list.append(項目) 戻りcontent_listの #のB保存 デフsave_content(自己、content_list): (オープンと" qiubai.txt " " "エンコード= " UTF-8 " Fとして): 以下のためのコンテンツでcontent_list: f.write(json.dumps(コンテンツ、ensure_ascii = 偽)) f.write(" N- \ " ) を印刷(" セーブ成功" ) DEF RUN(セルフ): #1. URLアドレスの法則によれば、URL構造リスト url_list = self.get_url_list() #2は、要求取得応答送信 のための URL で:URL_LIST html_str = self.parse_url(URL) #3を抽出データ CONTENT_LIST = self.get_content_list(html_str) #4. [保存]を self.save_content(content_list) の場合 __name__ == ' __main__ ' : qiubai = QiubaiSpider() qiubai.run()