假期学习【十一】Python爬取百度词条写入csv格式 python 2020.2.10
今天主要完成了根据爬取的txt文档,从百度分类从信息科学类爬取百度词条信息,并写入CSV格式文件。
txt格式文件如图: 为自己爬取内容分词后的结果。

代码如下:
import requests
from bs4 import BeautifulSoup
import csv
import io
import re url="https://baike.baidu.com/item/"
id=1
patton=re.compile(r'.*信息科学分类.*|.*软件.*|.*科技产品.*|.*公司.*|.*互联网人物.*|.*互联网.*|.*科技术语.*|.*技术.*|.*网站.*') #写入表头
def Head():
with open('E:/bdbk2.csv', 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["序号", "名称", "属性", "内容", "网址"]) def read():
f = open('E:/bdbk2.csv', 'a+', encoding='utf-8', newline='')
csv_writer = csv.writer(f)
global url
f=open("E:/word5.txt",'r+',encoding="utf-8")
for line in f:
url=url+line.rstrip("\n")
try:
global id, name, nature, content, tag
kv = {'user-agent': 'Mozilla/5.0'}
r = requests.get(url, headers=kv)
r.encoding = "utf-8"
demo = r.text
soup = BeautifulSoup(demo, "html.parser")
print(url)
# print(soup.prettify())
tag = soup.find_all("dd", {"id": "open-tag-item"})[0].get_text().replace("(", "").replace(")",
"").strip().replace(
"\n", "")
name = soup.find_all("h1")[0].get_text().strip()
nature = soup.find_all("h2")[0].get_text().replace("(", "").replace(")", "").strip()
if nature == '目录':
nature = tag
content = soup.find_all("div", {"class": "lemma-summary"})[0].get_text().strip().rstrip("]").lstrip("[")
if name != "百度百科错误页" and nature != "目录" and len(patton.findall(tag)) != 0:
print("序号:" + str(id))
print("名称:" + name)
print("属性:" + nature)
print("内容:" + content)
print("网址:" + url)
csv_writer.writerow([str(id), name, nature, content, url])
id += 1
except:
print("出错!")
url = "https://baike.baidu.com/item/"
f.close() if __name__=="__main__":
Head()
read()
假期学习【十一】Python爬取百度词条写入csv格式 python 2020.2.10的更多相关文章
- 爬虫实战(一) 用Python爬取百度百科
最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...
- Python——爬取百度百科关键词1000个相关网页
Python简单爬虫——爬取百度百科关键词1000个相关网页——标题和简介 网站爬虫由浅入深:慢慢来 分析: 链接的URL分析: 数据格式: 爬虫基本架构模型: 本爬虫架构: 源代码: # codin ...
- python 爬取百度url
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2017-08-29 18:38:23 # @Author : EnderZhou (z ...
- java 如何爬取百度百科词条内容(java如何使用webmagic爬取百度词条)
这是老师所布置的作业 说一下我这里的爬去并非能把百度词条上的内容一字不漏的取下来(而是它分享链接的一个主要内容概括...)(他的主要内容我爬不到 也不想去研究大家有好办法可以call me) 例如 互 ...
- python爬取百度贴吧帖子
最近偶尔学下爬虫,放上第二个demo吧 #-*- coding: utf-8 -*- import urllib import urllib2 import re #处理页面标签类 class Too ...
- python爬取百度搜索结果ur汇总
写了两篇之后,我觉得关于爬虫,重点还是分析过程 分析些什么呢: 1)首先明确自己要爬取的目标 比如这次我们需要爬取的是使用百度搜索之后所有出来的url结果 2)分析手动进行的获取目标的过程,以便以程序 ...
- 使用python爬取百度贴吧内的图片
1. 首先通过urllib获取网页的源码 # 定义一个getHtml()函数 def getHtml(url): try: page = urllib.urlopen(url) # urllib.ur ...
- python 爬取百度云资源
pan1 1 import urllib.request 2 import re 3 import random 4 5 def get_source(key): 6 7 print('请稍等,爬取中 ...
- python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', 'query 问题
解决办法: 修改url为手机版的地址:http://fanyi.baidu.com/basetrans User-Agent也用手机版的 测试代码: # -*- coding: utf-8 -*- & ...
随机推荐
- div中元素水平居中的方法
使用align属性 <div class="main" align="center"> <h1>MAIN</h1&g ...
- MySQL全文索引、联合索引、like查询、json查询速度大比拼
目录 查询背景 一.like查询 二.json函数查询 三.联合索引查询 四.全文索引查询 结论 查询背景 有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outlin ...
- [CSGO]跑图CFG
bot_kick //剔除所有电脑 sv_cheats 1 //允许作弊指令 bot_stop 1 //bot静止 mp_warmup_end //结束热身时间 mp_freezetime 0 //开 ...
- Winfrom 减少控件重绘闪烁的方法
Winform控件的双缓冲.控件的双缓冲属性是隐藏的,可以通过反射改变其属性值. lv.GetType().GetProperty("DoubleBuffered", Bindin ...
- SAP VL10B 报错 - 4500000317 000010 交付 $ 1 的交付项目 000010 与 POD 无关-
SAP VL10B 报错 - 4500000317 000010 交付 $ 1 的交付项目 000010 与 POD 无关- 如下公司间STO单据, 业务背景是货物从公司代码LYSP转入公司代码BTS ...
- 【Android开发艺术探索】理解Window和WindowManager
个人博客: http://www.milovetingting.cn 理解Window和WindowManager Window表示一个窗口的概念,是一个抽象类,具体实现是PhoneWindow,可以 ...
- opencv —— contourArea、arcLength 计算轮廓面积与长度
计算轮廓面积:contourArea 函数 double contourArea(InputArray contour, bool oriented = false); contour,输入的二维点集 ...
- OBS使用教程
OBS使用教程 OBS使用教程:录屏热键的设置 视频:基础画布分辨率1920/1080 1366,768输出缩放分辨率常用FPS值 30或者60 输出:输出模式:高级录像:编码器x264码率控制 CB ...
- Windows下 JDK1.8环境配置
安装JDK1.8,安装时会安装jdk.jre. 如果只是在IDEA中写写代码,安装完jdk,在IDEA中指定jdk路径就可以了. 如果要在命令行下执行jdk的命令,比如java.javac,或者要使用 ...
- 修改计算机名并更新sqlserver中存储的服务器名称
1. 查看计算机名use master go select @@servername select serverproperty('servername') 2.同步更新SQLse ...