この記事では主に、単純な 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遍历
from datetime import date time Str==>time dt=datetime.strptime(timesource,’%Y%m%d’) time==>Str dt.strftime(‘%Y-%m-%d’)
‘-‘.join(list) #将list中的各元素以-方式连接 ‘’.join([p.text.strip() for p in soup.select(‘#artibody p’)[:-1]])
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
です。 以上が単純な Python クローラー インスタンスを記録するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。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)