Maison  >  Article  >  développement back-end  >  Enregistrez une simple instance de robot d'exploration Python

Enregistrez une simple instance de robot d'exploration Python

零到壹度
零到壹度original
2018-03-31 13:55:136578parcourir

Cet article partage principalement avec vous un article sur l'enregistrement d'une simple instance de robot d'exploration Python. Les amis qui en ont besoin peuvent y jeter un œil.

Les principaux processus sont :

Exploration, tri et stockage

1 Parmi. eux Plusieurs packages sont utilisés, dont

requests qui est utilisé pour envoyer des requêtes au site Web et obtenir le code de la page Web

BeautifulSoup4 qui est utilisé pour traiter le code de la page Web obtenu et extraire des informations efficaces

pandas est utilisé pour stocker des informations

Lorsque to_excel('docname.xlsx'), vous aurez peut-être besoin d'un autre package openpyxl

import requests
from bs4 import BeautifulSoup
import re
import json
import pandas
import excel
import sqlite3
# import openpyxl

2 .Pour explorer Sina L'éditeur responsable de chaque actualité du site Web est un exemple

Vous pouvez déterminer les fonctions de def en travaillant à rebours

Après avoir obtenu l'adresse Web de l'actualité actuelle. , comment obtenir l'éditeur responsable ?

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) Comment obtenir l'URL de chaque page d'actualité en fonction de la page principale

Une certaine ligne de fichier se trouve en json, donc commentaires =requests.get('url') puis

jd=json.loads(comments.text.strip('var data='))

jd=['result'][' count'] ['total'] ==> Il s'agit du dictionnaire dans le dictionnaire, qui peut être consulté à partir de l'aperçu de l'élément d'inspection de la page Web

==>gt;

qui doit être restauré dans un dictionnaire, tout ce qui est supplémentaire aux extrémités gauche et droite doit être supprimé via strip()

Certains doivent être supprimés séparément sur les côtés gauche et droit, utilisez lstrip() et rstrip(), c'est-à-dire gauche et droite

==> ;pour ent dans ~:

ent['url']

*** ) Si les éléments requis obtenus par soup.select() sont dans la même classe, vous pouvez utiliser contents[0 ] Distinguer

***) Conversion entre time et str

from datetime import date time
Str==>time        dt=datetime.strptime(timesource,’%Y%m%d’)
time==>Str        dt.strftime(‘%Y-%m-%d’)

***) Connectez chaque élément de la liste[]

‘-‘.join(list) #将list中的各元素以-方式连接
‘’.join([p.text.strip() for p in soup.select(‘#artibody p’)[:-1]])

*** ) Pour une URL avec plusieurs pages, vous devez trouver la partie correspondante de la page et la remplacer par {},

puis remplacez-le par format()

news_total=[]
for i in range(1,3):
    newsurl=url.format(i)
    newsary=parseListlink(newsurl)
    new_total.extend(newsary)

3. Utilisez des pandas pour stocker les données, où se trouve la fonction DataFrame()

df=pandas.DataFrame(list)
print(df.head(20))  #显示前20条信息
df.to_excel('news.xlsx') #转存为excel格式,名字为news.xlsx

où le format de la liste est

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. Base de données de stockage

df=pandas.DataFrame(list)
print(df.head(20))  #显示前20条信息
# df.to_excel('news.xlsx') #转存为excel格式,名字为news.xlsx
with sqlite3.connect('news.sqlite') as db:
    # 存入news.sqlite文件中的news表格
    df.to_sql('news',con=db)
    # 读取/查询news表格并将数据赋值给df2
    df2=pandas.read_sql_query('SELECT * FROM news',con=db)


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn