当前位置: 首页 > news >正文

58同城网站模板博客类网站建设

58同城网站模板,博客类网站建设,山东高端网站建设服务商,连连建设跨境电商网站爬取时间#xff1a;2019-10-12爬取难度#xff1a;★★☆☆☆☆请求链接#xff1a;https://bbs.hupu.com/bxj爬取目标#xff1a;爬取虎扑论坛步行街的帖子#xff0c;包含主题#xff0c;作者#xff0c;发布时间等#xff0c;数据保存到 MongoDB 数据库涉及知识2019-10-12爬取难度★★☆☆☆☆请求链接https://bbs.hupu.com/bxj爬取目标爬取虎扑论坛步行街的帖子包含主题作者发布时间等数据保存到 MongoDB 数据库涉及知识请求库 requests、解析库 Beautiful Soup、数据库 MongoDB 的操作完整代码https://github.com/TRHX/Python3-Spider-Practice/tree/master/BasicTraining/hupu其他爬虫实战代码合集持续更新https://github.com/TRHX/Python3-Spider-Practice爬虫实战专栏持续更新https://itrhx.blog.csdn.net/article/category/9351278 文章目录【1x00】循环爬取网页模块【2x00】解析模块【3x00】MongoDB 数据储存模块【4x00】完整代码【5x00】数据截图【6x00】程序不足的地方【1x00】循环爬取网页模块 观察虎扑论坛步行街分区请求地址为https://bbs.hupu.com/bxj 第一页https://bbs.hupu.com/bxj 第二页https://bbs.hupu.com/bxj-2 第三页https://bbs.hupu.com/bxj-3 不难发现每增加一页只需要添加 -页数 参数即可最后一页是第 50 页因此可以利用 for 循环依次爬取定义一个 get_pages() 函数返回初始化 Beautiful Soup 的对象 page_soup方便后面的解析函数调用 虽然一共有 50 页但是当用户访问第 10 页以后的页面的时候会要求登录虎扑不然就没法查看而且登录时会出现智能验证所以程序只爬取前 10 页的数据 def get_pages(page_url):headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36}response requests.get(urlpage_url, headersheaders)page_soup BeautifulSoup(response.text, lxml)return page_soupif __name__ __main__:for i in range(1, 11):url https://bbs.hupu.com/bxj- str(i)soup get_pages(url) 【2x00】解析模块 使用 Beautiful Soup 对网页各个信息进行提取最后将这些信息放进一个列表里然后调用列表的 .append() 方法再将每条帖子的列表依次加到另一个新列表里最终返回的是类似于如下形式的列表 [[帖子1, 作者1], [帖子2, 作者2], [帖子3, 作者3]]这样做的目的是方便 MongoDB 依次储存每一条帖子的信息 def parse_pages(page_soup):data_list []all_list page_soup.find(ul, class_for-list)post_list all_list.find_all(li)# print(result_list)for post in post_list:# 帖子名称post_title post.find(a, class_truetit).text# print(post_title)# 帖子链接post_url https://bbs.hupu.com post.find(a, class_truetit)[href]# print(post_url)# 作者author post.select(.author a)[0].text# print(author)# 作者主页author_url post.select(.author a)[0][href]# print(author_url)# 发布日期post_date post.select(.author a)[1].text# print(post_date)reply_view post.find(span, class_ansour).text# 回复数post_reply reply_view.split(/)[0].strip()# print(post_reply)# 浏览量post_view reply_view.split(/)[1].strip()# print(post_view)# 最后回复时间last_data post.select(.endreply a)[0].text# print(last_data)# 最后回复用户last_user post.select(.endreply span)[0].text# print(last_user)data_list.append([post_title, post_url, author, author_url, post_date, post_reply, post_view, last_data, last_user])# print(data_list)return data_list 【3x00】MongoDB 数据储存模块 首先使用 MongoClient() 方法向其传入地址参数 host 和 端口参数 port指定数据库为 hupu集合为 bxj 将解析函数返回的列表传入到储存函数依次循环该列表对每一条帖子的信息进行提取并储存 def mongodb(data_list):client MongoClient(localhost, 27017)db client.hupucollection db.bxjfor data in data_list:bxj {帖子名称: data[0],帖子链接: data[1],作者: data[2],作者主页: data[3],发布日期: str(data[4]),回复数: data[5],浏览量: data[6],最后回复时间: str(data[7]),最后回复用户: data[8]}collection.insert_one(bxj) 【4x00】完整代码 # # --*-- coding: utf-8 --*-- # Time : 2019-10-12 # Author : TRHX # Blog : www.itrhx.com # CSDN : https://blog.csdn.net/qq_36759224 # FileName: hupu.py # Software: PyCharm # import requests import time import random from pymongo import MongoClient from bs4 import BeautifulSoupdef get_pages(page_url):headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36}response requests.get(urlpage_url, headersheaders)page_soup BeautifulSoup(response.text, lxml)return page_soupdef parse_pages(page_soup):data_list []all_list page_soup.find(ul, class_for-list)post_list all_list.find_all(li)# print(result_list)for post in post_list:# 帖子名称post_title post.find(a, class_truetit).text# print(post_title)# 帖子链接post_url https://bbs.hupu.com post.find(a, class_truetit)[href]# print(post_url)# 作者author post.select(.author a)[0].text# print(author)# 作者主页author_url post.select(.author a)[0][href]# print(author_url)# 发布日期post_date post.select(.author a)[1].text# print(post_date)reply_view post.find(span, class_ansour).text# 回复数post_reply reply_view.split(/)[0].strip()# print(post_reply)# 浏览量post_view reply_view.split(/)[1].strip()# print(post_view)# 最后回复时间last_data post.select(.endreply a)[0].text# print(last_data)# 最后回复用户last_user post.select(.endreply span)[0].text# print(last_user)data_list.append([post_title, post_url, author, author_url, post_date, post_reply, post_view, last_data, last_user])# print(data_list)return data_listdef mongodb(data_list):client MongoClient(localhost, 27017)db client.hupucollection db.bxjfor data in data_list:bxj {帖子名称: data[0],帖子链接: data[1],作者: data[2],作者主页: data[3],发布日期: str(data[4]),回复数: data[5],浏览量: data[6],最后回复时间: str(data[7]),最后回复用户: data[8]}collection.insert_one(bxj)if __name__ __main__:for i in range(1, 11):url https://bbs.hupu.com/bxj- str(i)soup get_pages(url)result_list parse_pages(soup)mongodb(result_list)print(第, i, 页数据爬取完毕)time.sleep(random.randint(3, 10))print(前10页所有数据爬取完毕) 【5x00】数据截图 一共爬取到 1180 条数据 【6x00】程序不足的地方 程序只能爬取前 10 页的数据因为虎扑论坛要求从第 11 页开始必须登录账号才能查看并且登录时会有智能验证可以使用自动化测试工具 Selenium 模拟登录账号后再进行爬取。
http://wiki.neutronadmin.com/news/92673/

相关文章:

  • 自己代码做网站婚纱网站模板免费下载
  • 靖江做网站单位微信微信
  • 福建网站建设培训班中小网站公司做的推广怎么样
  • 金华做网站最专业的公司wordpress相关文章
  • 云南手机网站制作贵阳企业网站排名优化
  • 400电话单页网站网站logoico怎么做
  • 天津省网站制作厂家wordpress有什么好看的主题
  • 建材企业网站推广方案中国新闻社待遇
  • 哪些网站有中文域名WordPress输出当前网址
  • 上海建设工程质量监督站网站最便宜的网站
  • 网站建设客户沟通模块网站多语切换怎么做
  • 农业网站建设方案 ppt模板郑州网站制作专业乐云seo
  • 承接网站开发 app开发开展建设文明网站活动方案
  • 如何做好电商网站平面设计建设网站代理商
  • 免费网站生成软件销售网站模板
  • 建设部网站js网站记住密码怎么做
  • 安徽省建设干部网站网站制作多少钱资讯
  • 企业网站导航代码广州市学校网站建设公司
  • 手机哪个网站好模版网站有源代码吗
  • 网站后台账户密码软件项目管理是什么
  • 百度做网站价格查找手机网站
  • 做知乎网站的图片网站推广 经典案例
  • 免费网站开发合同网站交互式
  • 免费的ai写作网站wordpress 后台 重定向循环
  • 酒店设计网站建设方案做网站霸屏公司销售好做吗
  • 河南网站建设定制网站必须做301重定向吗
  • 外贸模板建站seo全站优化全案例
  • 深圳市作网站的公司单页网站怎么卖
  • 网站搭建费用洱源网站建设
  • 太原php网站开发微信小程序直播开通条件