简易python爬虫 - 爬取站长论坛信息

爬取目标: 收集网站帖子里发帖人用户名,发帖人ID;帖子的ID,发帖内容;网站title

提前需要准备的python库

pip3 install requests //用于获得网站的源码

pip3 install bs4 //解析遍历网站标签

pip3 install urllib //解析网站的url

首先导入包

import requests
from bs4 import BeautifulSoup
from urllib.parse import parse_qs,urlparse

import json //导出文件的时候用json输出

第一部: 获取网站的源码

def get_Web_content(url):
  response = requests.get(url)
  if response.status_code == 200:
    if ‘抱歉,指定的主题不存在或已被删除或正在被审核‘ in response.text:
      return False
    else:
       return response.text

  else:
    return False

第二部: 获取网站的源码并且解析

def get_Web_Info(Content):
  soup = BeautifulSoup(Content,"html.parser")           //转化为BS对象
  title = soup.title.string
  url = soup.link[‘href‘]
  parsed_url = urlparse(url)              //parsed_url讲URL解析,最后返回字典对象(协议、位置、路径、参数、查询、片段).返回的查询query之后会用到
  posted_url = parse_qs(parsed_url.query)       //parse_qs解析 parse_qs函数范围的对象中的query查询
  tid = posted_url[‘tid‘][0]        //posted_url(字典类型)      //将字典第一个元素取出

  userlist = get_post_userlist(soup)                // 调用get_post_userlist方法 - 获取发帖用户信息
  contentlist = get_contentlist(soup)               // 调用get_conentlist方法,获得内容的信息

  for i in range(len(contentlist)):
    contentlist[i][‘user_list‘] = userlist[i]              // 将userlist中的信息 添加进contentlist中

  post_content_info = {
    ‘title‘:title,
    ‘url‘:url,
    ‘tid‘:tid,
    ‘author‘:userlist[0],
    ‘content‘:contentlist[0][‘content‘],
    ‘comment‘:contentlist[1:]
  }

  return post_content_info

def get_post_userlist(post_soup_object):
  user_info_doms = post_soup_object.select(".authi")
  # 选择器,可以获得多条也可以获得单条数据

  

  user_list = []
  # 定义一个用户空列表
  for i in range(len(user_info_doms)):
    if i%2 == 0:      // 第二条数据无用
    user_name = user_info_doms[i].a.string    //选择将a标签里的字段取出
  # 将下角标为i的数据转换成string类型
  uid = parse_qs(user_info_doms[i].a[‘href‘])[‘uid‘][0]     //获取链接中的uid
  user_list.append({"user_name":user_name,"uid":uid})
  # 向列表中添加元素
  return user_list        //返回一个列表
  # 返回发帖者的数组

def get_contentlist(Soup):
  object = Soup.select(‘.t_f‘)

  content_list = []
  for i in range(len(object)):
    content = object[i].string 
  postmessage = object[i][‘id‘]
  tid = postmessage.split("_")[1]         //split 以‘_‘分割 取之后的第一个元素
  content_list.append({"tid":tid,"content":content})
  return content_list

//将爬取的数据写入txt文件

def writeTofile(content):
  with open("test4.text",‘a‘,encoding=‘utf-8‘) as f:
  f.write(content[‘url‘]+‘\t‘)         ‘\t 后面追加一个tab空格‘
  f.write(content[‘tid‘]+‘\t‘)
  f.write(content[‘author‘][‘user_name‘]+‘\t‘)
  f.write(content[‘author‘][‘uid‘]+‘\t‘)
  f.write(json.dumps(content[‘comment‘],ensure_ascii=False)+‘\t‘)
  f.write(‘{0:<30}‘.format(content[‘title‘]).split("-")[0] +‘\t‘)
  f.write(‘\n‘)
  f.close()

url = ‘http://www.9yfeng.com/forum.php?mod=viewthread&tid=‘
for i in range(1,1000):
content = get_Web_content(url+str(i))
if(content!=False):
web_info = get_Web_Info(content)
writeTofile(web_info)

原文地址:https://www.cnblogs.com/kevin162726/p/10714382.html

时间: 2024-10-22 12:01:45

简易python爬虫 - 爬取站长论坛信息的相关文章

python爬虫爬取网上药品信息并且存入数据库

我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来. 1,首先分析网页 2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好.然后你会发现它的url地址是有规律的里面的j1是指第一页,j2第二页,这样构建一个url_list. 1 url_list = 'https://www.111.com.cn/categories/953710-a0-b0-c31-d0-e0-f0-g0-h0-i0-j%s.html'#然后循环获取响应 2

简易python爬虫爬取boss直聘职位,并写入excel

1,默认城市是杭州,代码如下 #! -*-coding:utf-8 -*- from urllib import request, parse from bs4 import BeautifulSoup import datetime import xlwt starttime = datetime.datetime.now() url = r'https://www.zhipin.com/job_detail/?scity=101210100' # boss直聘的url地址,默认杭州 def

python爬虫抓取哈尔滨天气信息

python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip install requests:pip install BeautifulSoup4) 代码:(亲测可以正确执行) 1 # coding:utf-8 2 """ 3 总结一下,从网页上抓取内容大致分3步: 4 1.模拟浏览器访问,获取html源代码 5 2.通过正则匹配,获取指定

用Python爬虫爬取广州大学教务系统的成绩(内网访问)

用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code] 在{}之前的部分就是"选择器"."选择器"指明了{}中的"样式"的作用对象,也就是"样式"作用于网页中的哪些元素.可参考:http://www.w3school.com.cn/cssref/css_selectors.asph

python爬虫爬取微博评论案例详解

这篇文章主要介绍了python爬虫爬取微博评论,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 数据格式:{"name":评论人姓名,"comment_time":评论时间,"comment_info":评论内容,"comment_url":评论人的主页} 以上就是我们需要的信息. 具体操作流程: 我们首相将主页获取完成以后,我们就会发现,其中 的内容带有相

python爬虫爬取csdn博客专家所有博客内容

python爬虫爬取csdn博客专家所有博客内容: 全部过程采取自动识别与抓取,抓取结果是将一个博主的所有 文章存放在以其名字命名的文件内,代码如下 结果如下: 版权声明:本文为博主原创文章,未经博主允许不得转载.

python爬虫爬取美女图片

python 爬虫爬取美女图片 #coding=utf-8 import urllib import re import os import time import threading def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImgUrl(html,src): srcre = re.compile(src) srclist = re.findall(srcre,html)

python爬虫抓取站长之家IP库,仅供练习用!

python爬虫抓取站长之家IP库,单线程的,仅供练习,IP库数据有43亿条,如果按此种方法抓取至少得数年,所以谨以此作为练手,新手代码很糙,请大家见谅. #!/usr/bin/python #coding=UTF-8 import urllib2 import re import os import csv import codecs user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = { 'User-

Python爬虫爬取博客园并保存

Python爬虫爬取博客园并保存        爬取博客园指定用户的文章修饰后全部保存到本地 首先定义爬取的模块文件: crawlers_main.py 执行入口 url_manager.py url管理器 download_manager.py 下载模块 parser_manager.py html解析器(解析html需要利用的内容) output_manager.py 输出html网页全部内容文件(包括css,png,js等) crawlers_main.py 执行入口 1 # coding