爬虫示例程序

原创 2017年01月03日 14:27:14
import requests
from bs4 import BeautifulSoup
try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET

base_url = 'http://history.xikao.com'
response = requests.get(base_url + '/people')
soup = BeautifulSoup(response.text'html.parser')

a_family_array = soup.find('div'id='article').ul.findAll('a')
#存放每个演员名字和网址的dict
name_url = dict()
#演员总数
peopleNum = 0
dis_num = 0
#遍历所有姓氏
for a_family in a_family_array:
    response = requests.get(base_url + a_family['href'])
    soup = BeautifulSoup(response.text'html.parser')

    #得到所有演员的a标签
    a_name_array = soup.find('div'id='article').findAll('a')

    #遍历所有演员
    for a_name in a_name_array:
        name_url[a_name['title']] = base_url + a_name['href']
        peopleNum += 1
        print(a_name['title']base_url + a_name['href'])

xml_name_root = ET.Element('people')
xml_people_root = ET.Element('people')

count = 0

for name in name_url:
    person_abs_url = name_url[name]
    # 将所有演员姓名保存到xml中
    xml_name = ET.SubElement(xml_name_root'name')
    xml_name.text = name

    if count <= 1000:
        # 将演员姓名,url,介绍放在xml中
        response = requests.get(person_abs_url)
        soup = BeautifulSoup(response.text'html.parser')
        xml_person = ET.SubElement(xml_people_root'person')
        xml_name = ET.SubElement(xml_person'name')
        xml_name.text = name
        xml_url = ET.SubElement(xml_person'url')
        xml_url.text = person_abs_url
        xml_dis = ET.SubElement(xml_person'dis')

        # 去掉网页中“活动年表”以后的文字
        import re
        try:
            all_text = soup.find('div'id='article').table.text.strip()
            useful_text = re.compile('活动年表.*').sub(''all_text)
            xml_dis.text = useful_text
            count += 1
            print('抓取了第'count'个演员'name'的信息')
        except:
          pass

tree_name = ET.ElementTree(xml_name_root)
f = open('E:/name.xml''wb')
tree_name.write(f)
f.close()

tree_people = ET.ElementTree(xml_people_root)
f = open('E:/discription.xml''wb')
tree_people.write(f)
f.close()
版权声明:欢迎交流讨论,转载请注明出处

requests+BeautifulSoup爬虫示例程序

import requests from bs4 import BeautifulSoup try: import xml.etree.cElementTree as ET except Im...
  • qiaojialin
  • qiaojialin
  • 2017年01月17日 09:43
  • 250

CMD文件理解(F2810,F2812)

2810和2812一样,CMD采用分页制,其中PAGE0用于存放程序空间,而PAGE1用于存放数据空间;   在CMD文件里有两个基本的段:初始化段和非初始化段。初始化段包含代码和常数等必须在D...
  • li1004133206
  • li1004133206
  • 2016年12月20日 17:58
  • 300

运行Hadoop示例程序WordCount

WordCount程序的目标是统计几个文件中每个单词出现的次数,是官方提供的示例程序,这里使用的hadoop的版本为hadoop-1.2.1。 1)、首先编写代码,将WordCount.java文件放...
  • x_i_y_u_e
  • x_i_y_u_e
  • 2015年04月08日 17:42
  • 1036

qmake编译示例程序HelloQt出错问题的解决

 之前看到很多初学Qt的Linux友们在使用qmake编译第一个HelloQt或者HelloWorld程序时报错,并且始终找不到原因。前几天我也遇到了同样的问题,我用的是书上的例子,将代码用Vim输入...
  • LynFam
  • LynFam
  • 2009年10月25日 23:05
  • 2360

VC获取天气

// weather.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...
  • qq_30754685
  • qq_30754685
  • 2017年08月18日 17:42
  • 137

使用MATLAB编译器实现混编(小结)

MALAB作为应用最为广泛的数学软件,具有丰富的矩阵运算功能、涵盖多个科技领域的工具箱,以及强大的图形显示功能等。相比C/C++等MATLAB能缩短开发时间,但对于一些大型、复杂的应用程序来说,完全使...
  • liminwang0311
  • liminwang0311
  • 2011年08月03日 12:59
  • 4125

示例程序

1. 系统菜单: Environment -> Examples。2. SE38后,输入DEMO*, F4.3. SE38, input BCALV*, F4,ALV相关的例子 ...
  • wu21211721
  • wu21211721
  • 2008年03月24日 21:14
  • 137

spark 2.2.0学习笔记2之LocalWordCountDemo

spark 2.2.0学习笔记2之LocalWordCountDemoInfo底层—-集群管理器 local 独立调度器—-Spark自带/默认 Hadoop YARN Apache Mesos 大致...
  • undergrowth
  • undergrowth
  • 2017年12月19日 20:27
  • 49

php示例程序(二)

 二、ticket生成及检 查 这个子程序实现的功能看起来挺复杂,到现在我都没想到一个合适的词来解释ticket,但是意思倒是很明确,这相当于远端人员的一个用来标识自己身份的入场券,我们不妨仍将其写成...
  • yaohuajiang
  • yaohuajiang
  • 2007年01月21日 22:49
  • 369

DynamoRIO 系列三:List of Samples -- 示例的功能

drrun.exe DynamoRIO samples
  • chengyu779394084
  • chengyu779394084
  • 2015年11月30日 11:12
  • 722
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:爬虫示例程序
举报原因:
原因补充:

(最多只允许输入30个字)