爬虫:工作中编写的一个python爬取web页面信息的小demo

  最近公司要求编写一个爬虫,需要完善后续金融项目的数据,由于工作隐私,就不付被爬的网址url了,下面总结下spider的工作原理。

  语言:python;工具:jupyter;

 

  (1)使用requests模块,获取url页面。

import requests
url = "http://www.~~~~~~~~~~~~~~~~~~~~~~~~~~"
r = requests.get(url)

  (2)解析html页面(若是pdf页面需要其他工具模块)需要使用BeautifulSoup模块,把request下来的页面信息保存为soup格式。

from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text)

  (3)利用soup找到超链接href 并把href保存到文件中,为了后续的使用;

with open(r"E:\aa.txt", "wb") as code:
    for link in soup.find_all(‘a‘):
        code.write(str(link.get(‘href‘)) + ‘\r\n‘)
print "Download Complete!"

  (4)在上一步的文件中,读取保存的href连接,并保存到list数据结构中;

fd = open(r"E:\juchao.txt","r")
mylist = []for line in fd:
    mylist.append(line)

  (5)编写header,为了post方式伪装成浏览器(必要的话,设置参数data);并拼接成访问的url格式(利用浏览器调试,查看网络中的信息);

headers = {
‘Accept‘: ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8‘,
‘Accept-Language‘: ‘zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3‘,
‘Accept-Encoding‘: ‘gzip, deflate‘,
‘Connection‘: ‘keep-alive‘,
‘Cookie‘: ‘JSESSIONID=27AF575249A833C368677F9B5869A463‘,
‘Host‘: ‘www.cninfo.com.cn‘,
‘Referer‘: ‘http://www.~~~~~~~~~~~~~~~‘,
‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0‘,
‘Content-Length‘: ‘262‘,
‘Content-Type‘: ‘application/x-www-form-urlencoded; charset=UTF-8‘,
‘X-Requested-With‘: ‘XMLHttpRequest‘,
}urlpath = ‘http://www.cninfo.com.cn/information/brief/szmb‘myUrls = []for submylist in mylist:    urlId = ‘‘    url = ‘‘    urlId = submylist[-7:-1]    url = urlpath + urlId + ‘.html‘    myUrls.append(url)

  (6)新拼接的url是我们需要的最终页面,requests获取url页面(注意编码问题),利用soup解析html页面,生成json字符串,保存到文件。

import json
with open(r"E:\juchao_json.txt", "wb") as code:

    for k in xrange(len(myUrls)):
        r1 = requests.get(myUrls[k])
        r1.encoding = r1.apparent_encoding
        # print r1.encoding

        soup = BeautifulSoup(r1.text)
        jsonMap = {}
        jsonMapKey = []
        jsonMapValue = []
        for i in soup.select(".zx_data"):
            jsonMapKey.append(i.text)

        for i in soup.select(".zx_data2"):
            jsonMapValue.append(i.text[:-3])

        for j in xrange(len(jsonMapKey)):
            jsonMap[jsonMapKey[j]] = jsonMapValue[j]    

        strJson = json.dumps(jsonMap, ensure_ascii=False)
#         print strJson
        code.write(strJson.encode(‘utf-8‘) + ‘\r\n‘)

print ‘Done!‘
时间: 2024-08-18 06:31:58

爬虫:工作中编写的一个python爬取web页面信息的小demo的相关文章

Python爬虫_用Python爬取csdn页面信息目录

1.原理: 这个程序可以实现批量获取到某一个CSDN博客的个人信息.目录与链接的对应,并存到一个本目录的mulu.txt文件中 2.具体代码: # -*- coding: cp936 -*- import urllib.request# import re# import sys# import time# import random import string headers = {# 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1;

爬虫实战【1】使用python爬取博客园的某一篇文章

第一次实战,我们以博客园为例. Cnblog是典型的静态网页,通过查看博文的源代码,可以看出很少js代码,连css代码也比较简单,很适合爬虫初学者来练习. 博客园的栗子,我们的目标是获取某个博主的所有博文,今天先将第一步. 第一步:已知某一篇文章的url,如何获取正文? 举个栗子,我们参考'农民伯伯'的博客文章吧,哈哈.他是我关注的一个博主. http://www.cnblogs.com/over140/p/4440137.html 这是他的一篇名为"[读书笔记]长尾理论"的文章. 我

python爬取主播信息

之前学过python的爬虫技术,现在回顾一下看看还会不会,果然有坑. 先爬取了微博评论网友的id代码如下 import requestsurl = 'https://m.weibo.cn/api/comments/show?id=4188633986790962&page=6h = requests.get(url)print(h.json()['data']['data'][0]['user']['id']) 执行的时候报错 Traceback (most recent call last):

Python爬取51job职位信息

# -*- coding: utf-8 -*- # @Time : 2018/3/1 16:38 # @Author : HT # @Email : [email protected] # @File : 51job.py # @Software: PyCharm import urllib import re import sys reload(sys) sys.setdefaultencoding('utf8') i = 0#统计爬取总条目 def url_input(url): get_h

python爬取北京租房信息

租房助手 发现官网的筛选方式不能满足自己的需求,所以爬取相关网站制作出现在的东西来 效果预览-> <a href="https://virzc.com/2018/05/17/beijingrent/#more" target="_blank">在线预览</a> ###下面进行详细分析一.首先爬取起始地和终点地的路线及沿途地铁站名称 1.爬取8684.cn的地铁查询: pattern = 'http://bjdt.8684.cn/so.p

python 爬取html页面

1 #coding=utf-8 2 import urllib.request 3 4 def gethtml(url): 5 page=urllib.request.urlopen(url) 6 html=page.read().decode("utf-8") 7 8 return html 9 10 11 12 url="........" 13 14 html = gethtml(url) 15 16 17 print(html) 有些网站的页面无法全部爬取(

python爬取网业信息案例

需求:爬取网站上的公司信息 代码如下: import json import os import shutil import requests import re import time requests.packages.urllib3.disable_warnings() #通过url请求接口,获取返回数据 def getPage(url,headers): try: response = requests.get(url=url, headers=headers, verify=False

python 爬取糗事百科 gui小程序

前言:有时候无聊看一些搞笑的段子,糗事百科还是个不错的网站,所以就想用Python来玩一下.也比较简单,就写出来分享一下.嘿嘿 环境:Python 2.7 + win7 现在开始,打开糗事百科网站,先来分析.地址:https://www.qiushibaike.com 一般像这种都是文本的话,查看源代码就可以看到内容了. 已经可以看到都是在一个class 为content 的div里面,这样就很简单了,直接上正则表达式来匹配就好了. <div.*?class="content"&

[Python学习] 简单爬取CSDN下载资源信息

这是一篇Python爬取CSDN下载资源信息的例子,主要是通过urllib2获取CSDN某个人所有资源的资源URL.资源名称.下载次数.分数等信息:写这篇文章的原因是我想获取自己的资源所有的评论信息,但是由于评论采用JS临时加载,所以这篇文章先简单介绍如何人工分析HTML页面爬取信息. 源代码 # coding=utf-8 import urllib import time import re import os #****************************************