>  기사  >  백엔드 개발  >  간단한 Python 크롤러 인스턴스 기록

간단한 Python 크롤러 인스턴스 기록

零到壹度
零到壹度원래의
2018-03-31 13:55:136632검색

이 기사는 주로 간단한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.