この記事では主に、単純な Python クローラー インスタンスの記録に関する記事を共有します。必要な方はご覧ください。
主なプロセスは以下に分かれています:
クロール、並べ替え、および保存
1 ウェブサイトにリクエストを送信し、ウェブページのコードを取得するために使用される
リクエストを含む、いくつかのパッケージが使用されます。
BeautifulSoup4は、取得したWebページのコードを処理し、有効な情報を抽出するために使用されます
pandasは、情報を保存するために使用されます
このうち、to_excel('docname.xlsx')の場合、別のパッケージopenpyxl
import requests from bs4 import BeautifulSoup import re import json import pandas import excel import sqlite3 # import openpyxl
2が必要になる場合がありますSina をクロールするには Web サイトの各ニュースの担当編集者を例に挙げます。現在のニュースの Web サイトのアドレスを取得した後、その担当編集者を取得する方法を逆算して決定します。 ?
def getComments(url): # 向url对应网址发送请求,获取到的网页内容存储在res中 res=requests.get(url) # 将res内容编码,编码的方式'utf-8'根据网页的charset而定 res.encoding='utf-8' # 因为需要处理res,因此将文本存入soup # html.parser不清楚是干嘛的 soup=BeautifulSoup(res.text,'html.parser') # 根据所需要的内容,通过BS4的select选择,得到数组,用[0]取出元素 # 因为是文本所以直接通过.text得到所需要的内容 return soup.select('.show_author')[0].text # 在soup.select('.link')[0]中,若为id则带# # 若为class则带. # 其他的如a和h1等则无要求 #其中需要层层select并取[0] #有些有多元素,则需通过for遍历ii) メインページを元に各ニュースページのURLを取得する方法 json内に特定の行のファイルがあるので、comments=requests.get('url')を渡して jd=json.loads (comments.text.strip('var data=')) jd=['result']['count']['total'] ==>これは辞書内の辞書です。 Webページから要素を確認できる プレビューで見る ==> 辞書化可能 このうち、辞書に戻したい場合は、左側と右側の余分なものを削除する必要がありますストリップ() 左側と右側を別々に削除する必要がある場合は、lstrip() と rstrip()、つまり左側と右側を使用します ==>for ent in ~: ent['url' ]***)Soup.select()で取得した必要な要素が同じクラスにある場合は、contents[0]を使用して区別できます***)timeとstrの変換
from datetime import date time Str==>time dt=datetime.strptime(timesource,’%Y%m%d’) time==>Str dt.strftime(‘%Y-%m-%d’)** *) list[] の各要素を接続します
‘-‘.join(list) #将list中的各元素以-方式连接 ‘’.join([p.text.strip() for p in soup.select(‘#artibody p’)[:-1]])***) 複数のページがある URL の場合、ページを見つける必要があります 該当する部分を {}、 に変更し、format() に置き換えます
news_total=[] for i in range(1,3): newsurl=url.format(i) newsary=parseListlink(newsurl) new_total.extend(newsary)
3. pandas を使用してデータを保存します。これは、DataFrame() 関数関数
df=pandas.DataFrame(list) print(df.head(20)) #显示前20条信息 df.to_excel('news.xlsx') #转存为excel格式,名字为news.xlsxであり、リストの形式は
for u in geturl(url):
excel1 = [] # 循环开始清空数组
result = {} # 循环开始清空字典
try:
# 每个条目在新字典赋值
result['zeren']=getComments(u)
result['id']=i
i=i+1
except:
continue
#每个条目形成数组
excel1.append(result)
#在列表中添加数组
list.extend(excel1)
です。
以上が単純な Python クローラー インスタンスを記録するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。