首页 > 其他分享 >爬虫入门-写一个小爬虫的思路

爬虫入门-写一个小爬虫的思路

时间:2022-10-24 10:02:18浏览次数:47  
标签:入门 title 小爬虫 list 爬虫 dic result rstrip print

注释里面比较详细。

点击查看代码
# -*- codeing = utf-8 -*-
from bs4 import BeautifulSoup
import requests
import csv

# 准备URL
url = "https://ssr1.scrape.center/"
# 获取页面源码
code_request = requests.get(url).content.decode("utf-8")
# 转为Soup对象
soup = BeautifulSoup(code_request, "html.parser")
# 获取 带有bg样式的标签tr 的源码
code_list = soup.findAll("div", attrs={"class": "el-card item m-t is-hover-shadow"})
# 预设列表存放结果
result_list = []
for i in code_list:
    # 准备空字典以存放所需数据
    result_dic = {}
    # 使用正则表达式获取响应内容 | .replace("\n","")删除换行符   .lstrip()和.rstrip()删除文本左、右空白
    result_title = i.findAll("td", attrs={"class": "td-title"})[0].findAll("a")[0].text.replace("\n","").lstrip().rstrip()
    result_type = i.find_all("span", attrs={"class": "face"})[0].get("title").replace("\n", "").lstrip().rstrip()
    result_author = i.find_all("a", attrs={"class": "author"})[0].text.replace("\n", "").lstrip().rstrip()
    result_time = i.find_all("td")[-1].text.replace("\n", "").lstrip().rstrip()
    # print("---------测试----------")
    # print(result_title,result_author,result_time)
    # print("---------测试----------")
    result_dic["标题"] = result_title
    result_dic["发帖种类"] = result_type
    result_dic["作者"] = result_author
    result_dic["回复时间"] = result_time
    print()
    # 将词典数据放入列表
    result_list.append(result_dic)
    print(result_list) # 此时的列表是由多个字典元素组成的列表
# 开始写出CSV文件
with open("resultb.csv", "a+", encoding="utf-8") as f:
    # 准备CSV表头
    writer = csv.DictWriter(f, fieldnames=["标题",'发帖种类','作者', '回复时间'])
    # 写CSV表头
    writer.writeheader()
    # 写CSV数据
    writer.writerows(result_list)
# 读取CSV
with open("resultb.csv", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row)
可以直接跑,不懂的地方可以私信我!

标签:入门,title,小爬虫,list,爬虫,dic,result,rstrip,print
From: https://www.cnblogs.com/jiankaitianmen/p/16820526.html

相关文章

  • Python入门练习(Question4)
    年份天数题目输入某年某月某日,判断这一天是这一年的第几天?特殊情况,闰年时需考虑二月多加一天解答year=int(input("inputyear:"))month=int(input("inputmont......
  • Python入门练习(Question3)
    完全平方数题目一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?解答defsolution3():n=10whileTrue:n+=1......
  • 爬虫之利用selenium绕过js加载
    契子最近发现在ip被tx及其他大量收购,强取的背景下,网络小说很难诞生出有高质量的作品,为此,我计划爬取某个网站100本(再多就暴了)比较优质往年的小说解决精神上的匮乏构思一......
  • 【RocketMQ入门到精通】— RocketMQ初级特性能力 | RocketMQ中的Subscribe都是什么样
    名言警句任何先进的技术均与魔法无异追本溯源​​经历了6个月的失踪,我将带着干货终究归来!【RocketMQ入门到精通】​​消息消费通常需要考虑消息队列负载、消费模式、拉取机......
  • Spring —— DI入门案例
    DI入门案例  思路分析:    1、基于IoC管理bean    2、Service中使用new形式创建的Dao对象是否保留(否)    3、Service中需要的Dao对象如何进入Service中?(提......
  • HTML概念介绍以及快速入门
    HTML概念介绍概念:HyperTextMarkupLanguage超文本标记语言的缩写超文本:超文本是用超链接的方法,将各种不同空间的文件信息组织在一起的网状文本(链接作用)......
  • JDBCTemplate_介绍和JDBCTemplate_快速入门
    JDBCTemplate_介绍:spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发步骤︰1.导入jar包2.创建dbcTemplate对象。依赖于数据源DatasourcejdbcTemplat......
  • C语言入门-进制转换
    什么是数制一种计数机制 二进制(用0b表示)只用0和1两个符号来表示数据进位规则:逢二进一 八进制(用0表示)用0~7这八个符号来表示进位规则:逢八进......
  • # yyds干货盘点 # 盘点Python网络爬虫过程中xpath的联合查询定位一个案例
    大家好,我是皮皮。一、前言前几天在Python钻石交流群【髙鵬】问了一个​​Python​​网络爬虫的问题,提问截图如下:原始代码如下:importtimefromseleniumimportwebdriverfro......
  • Spring注解开发入门(五)@Value注解从properties文件读取值,config类加载properties文件
    要想让@Value注解获得properties文件当中的值,第一步需要Spring容器加载properties文件。这就需要在配置类里面使用@PropertySoource注解来知道properties文件的路径了。......