이 기사는 주로 간단한 Python 크롤러 인스턴스 기록에 대한 기사를 공유합니다. 필요한 친구는 한 번 살펴볼 수 있습니다.
주요 프로세스는 다음과 같이 나뉩니다.
크롤링, 정렬 및 저장
1 웹사이트에 요청을 보내고 웹페이지 코드를 얻는 데 사용되는
요청을 포함하여 여러 패키지가 사용됩니다.
BeautifulSoup4는 획득한 웹페이지 코드를 처리하고 효과적인 정보를 추출하는 데 사용됩니다.
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를 크롤링하려면 웹사이트의 각 뉴스 담당 편집자를 예로 들어보세요
def의 기능은 거꾸로 작업하여 확인할 수 있습니다
현재 뉴스 항목 아래의 웹페이지 URL을 얻은 후, 편집장?
d
ef 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'] ==>여기 사전 내의 사전이 있습니다. 웹 페이지에서 요소를 확인할 수 있습니다 미리보기로 보기
==> 사전으로 변환 가능
그 중 사전으로 복원하려면 왼쪽과 오른쪽에 있는 추가 항목을 다음을 통해 제거해야 합니다. Strip()
왼쪽과 오른쪽을 따로 삭제해야 하는 경우 lstrip() 및 rstrip(), 즉 왼쪽과 오른쪽을 사용하세요
==>for ent in ~:
ent['url' ]
***) Soup.select()에서 얻은 필수 요소가 동일한 클래스에 있으면 content[0]을 사용하여 구분할 수 있습니다.
***) 시간과 문자열 간 변환
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. 데이터를 저장하려면 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)
4입니다.
위 내용은 간단한 Python 크롤러 인스턴스 기록의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!