【python】使用requests多线程爬取论坛文章并存储在sqlite中
代码仅仅是例子,主要是方法的使用,因为是韩国论坛需要代理才能访问。欢迎留言讨论
import threading
import requests
from bs4 import BeautifulSoup
import base64
import sqlite3
import re
import datetime
from multiprocessing.dummy import Pool as ThreadPool
# import _thread
conn = sqlite3.connect('reptile.db') #连接数据库
# 连接到SQLite数据库
c = conn.cursor()
# 目标网站 URL
# url = 'https://www.ppomppu.co.kr/zboard/zboard.php?id=freeboard&hotlist_flag=999'#爬取整页文章及内容
def getBBS(page): url = 'https://www.ppomppu.co.kr/zboard/zboard.php?id=freeboard&hotlist_flag=999&page='+str(page)# 发送请求并解析 HTMLresponse = requests.get(url)soup = BeautifulSoup(response.content, 'html.parser')# 提取文章信息articles = []for article in soup.select('.list0,.list1'):author = article.select_one('.list_name').text.strip()title = article.select_one('.list_title').text.strip()uid=article.find_all('td',class_='eng list_vspace')[0].text.strip()timestamp = article.find_all('td',class_='eng list_vspace')[1].get('title')content_url ='https://www.ppomppu.co.kr/zboard/'+article.find_all('a')[1].get('href')content_response = requests.get(content_url)content_soup = BeautifulSoup(content_response.content, 'html.parser')date=content_soup.find('div',class_='sub-top-text-box').get_text()print(date)pattern = r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}"match = re.search(pattern, date)if match:print("匹配到的时间为:", match.group(0))date=match.group(0)else:print("未找到匹配的时间")# 获取当前时间now = datetime.datetime.now()date=nowcontent_element = content_soup.find_all('table',class_='pic_bg')[2]if content_element:content = content_element.text.strip()images = content_element.find_all('img')image_data = []for image in images:image_url = image['src']image_response =requests.get('https:'+image_url)# image_data.append(base64.b64encode(image_response.content).decode())# 将 img 标签的 src 属性替换成 base64 编码的内容base64_data = base64.b64encode(image_response.content).decode()image["src"] = "data:image/png;base64," + base64_dataprint(content_element)# content_element=content_element.replace(image_url,image["src"])# print(content_element)# articles.append({# 'author': author,# 'title': title,# 'timestamp': timestamp,# 'content': content,# 'images': image_data# })print('作者:', author)print('标题:', title)print('发布时间:', timestamp) content=str(content_element)# 插入一条记录c.execute("INSERT OR IGNORE INTO getData (dataID,textID,dataName,textUrl,textTitle,textTime,textBody,textState,textName,regTime,EncodingStr) VALUES(:dataID,:textID,:dataName,:textUrl,:title,:textTime,:textBody,:textState,:author,:regTime,:EncodingStr)",{"dataID":'1',"textID":uid,"dataName":'ppomppu','textUrl':content_url,'title':title,'textTime':date,'textBody':content,'textState':'1','author':author,'regTime':timestamp,'EncodingStr':'EUC-KR'})
# 提交当前事务,保存数据conn.commit()print(articles)# 开始
def startUp():# urls = ['https://www.ppomppu.co.kr/zboard/zboard.php?id=freeboard&hotlist_flag=999&page={}'.format(i) for i in range(1, 6575)]# 设置线程数量num_threads = 10# 设置要爬取的页数pages = range(1, 10000)# 创建线程池pool = ThreadPool(num_threads)# 在线程池中运行函数results = pool.map(getBBS, pages)# 关闭线程池pool.close()pool.join()if __name__ == '__main__': startUp()# 打印文章信息
# def print():
# for article in articles:
# print('作者:', article['author'])
# print('标题:', article['title'])
# print('发布时间:', article['timestamp'])
# print('文章内容:', article['content'])
# print('文章图片:', article['images'])
# print('------------------------')
# 关闭数据库连接
conn.close()
【python】使用requests多线程爬取论坛文章并存储在sqlite中相关推荐
- Python的Requests来爬取今日头条的图片和文章
Python的Requests来爬取今日头条的图片和文章并且存入mongo config.py MONGO_HOST = 'localhost' MONGO_PORT = 27017 MONGO_DB ...
- python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程
python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...
- python使用requests库爬取淘宝指定商品信息
python使用requests库爬取淘宝指定商品信息 在搜索栏中输入商品 通过F12开发者工具抓包我们知道了商品信息的API,同时发现了商品数据都以json字符串的形式存储在返回的html内 解析u ...
- python多线程爬取多个网址_【Python爬虫】多线程爬取斗图网站(皮皮虾,我们上车)...
原标题:[Python爬虫]多线程爬取斗图网站(皮皮虾,我们上车) 斗图我不怕 没有斗图库的程序猿是无助,每次在群里斗图都以惨败而告终,为了能让自己在斗图界立于不败之地,特意去网上爬取了斗图包.在这里 ...
- 【Python 爬虫】多线程爬取
文章目录 前言 一.多进程库(multiprocessing) 二.多线程爬虫 三.案例实操 四.案例解析 1.获取网页内容 2.获取每一章链接 3.获取每一章的正文并返回章节名和正文 4.将每一章保 ...
- 使用python的requests库爬取微信公众号文章中的图片
1.首先导入我们需要的库: import requests from lxml import etree import os 以某篇文章为例,复制该文章连接: 2.使用requests库获取该网址的响 ...
- python使用requests+xpath爬取小说并下载
这个爬虫只是选定热门小说,不支持自选搜索下载,日后会补充并改进. 选定小说网址: 笔趣阁 爬取: 需要导入的包 import requests from lxml import etree impor ...
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】
[写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...
- 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xaf\x8c\xe7\x9)的解决方法
[写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...
最新文章
- Nacos 1.1.4 发布,业界率先支持 Istio MCP 协议
- The import javax.servlet cannot be resolved
- MAX3222/MAX3232/ MAX3237/MAX3241/串口通信中文_技术文档
- mongoclient php扩展,lnmp安装mongo扩展后,在实例化mongoClient()时出错
- 小心这 10 个云计算错误!
- mysql 导入,导出数据库
- python调用文件可以干嘛_Python完成读取并保存文件类的详细介绍
- java下载execl优化_Java内存优化之POI Excel(二)
- jdk下载和安装教程
- Pr:视频效果( 2020 版)速览
- 这几个好用的简单流程图模板,你可不能错过
- Facebook自动化测试札记
- SiteGround主机和HostGator哪个好?(权威技术性分析)2022最新对比
- 共享储物柜app开发方案
- 基于STC15系列单片机课程中讲到的汇编指令(一)
- 苹果神武4手游等待服务器响应,ios回合制手游《神武4》如何在登高探宝中快速拿到奖励?...
- [应用方案]基于DP5020点阵屏的显示驱动
- 什么是NFS?NFS挂载
- ms office word2013教程 - 文字处理之邮件合并
- eclipse中创建spring boot项目
热门文章
- 手机连接电脑win10热点,手机显示无IP分配
- 责任链模式在王者荣耀中的应用
- 将一组数据按每组n个元素 进行分组
- Word2019 自定义设置页码
- @DateFormat与@JsonFormat
- mysql 数据库查看锁表_mysql解锁表(如何查看数据库锁表)
- “懒”人的居家必备神器
- 网络诊断“您可能需要与该网络的Internet服务提供商ISP签署协议才能获得访问Internet的权限
- YUV的plannar,packet及semi-planar格式及RGB
- [转帖] Kubernetes如何使用ReplicationController、Replica Set、Deployment管理Pod ----文章很好 但是还没具体操作实践 也还没记住....