python爬虫获取论文,python的【爬虫】:使用urllib爬取wiki文章,使用beautifulSoup解析html...

之所以写这个,是因为搜不到关于wiki爬取方面的教程。

先学习:

正则表达式,http://python.jobbole.com/81346/

BeautifulSoup(html文档解析器),http://python.jobbole.com/81349/

爬取糗事百科实例,http://python.jobbole.com/81351/

现在开始爬取wiki数据:

分析页面,F12,找到要的内容,如下:

0818b9ca8b590ca3270a3433284dd417.png

但有一点,注意:

0818b9ca8b590ca3270a3433284dd417.png

解决这个干扰的方法是:

ps=div.find_all(name='p', limit=3, recursive=False) #only direct childrenrecursive=False!

最后,BeautifulSoup一般能够解决分析网页的大部分问题,如果不是没办法,不要使用正则表达式。。。。

爬虫代码部分:

url="https://en.wikipedia.org/wiki/"+words[i]

request=urllib2.Request(url, headers=headers)

response=urllib2.urlopen(request)

wikiHtml=response.read().decode('utf-8')

网页内容提取部分(找到div、找到想要的p、提取p的文本内容):

div=html.find(name='div', id='mw-content-text')

ps=div.find_all(name='p', limit=3, recursive=False) #only direct children

for p in ps:

pText=p.get_text()

完整代码供大家参考。。。。

#!usr/bin/env

# -*-coding:utf-8 -*-

import pandas as pd

import numpy as np

import urllib, urllib2

import re

from bs4 import BeautifulSoup

import sys

reload(sys)

sys.setdefaultencoding("utf8")

#for UnicodeEncodeError

def SaveFile(content, filename):

f=open("wikiData/"+filename,"a")

f.write(str(content)+"\n")

f.close()

def SpideWiki(words):

user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

headers={'User-Agent':user_agent}

try:

for i in range(len(words)):

url="https://en.wikipedia.org/wiki/"+words[i]

request=urllib2.Request(url, headers=headers)

response=urllib2.urlopen(request)

wikiHtml=response.read().decode('utf-8')

html=BeautifulSoup(str(wikiHtml),"lxml")

div=html.find(name='div', id='mw-content-text')

ps=div.find_all(name='p', limit=3, recursive=False) #only direct children

for p in ps:

pText=p.get_text()

SaveFile(pText, words[i])

print words[i], "process over...", "=="*20

except urllib2.URLError, e:

if hasattr(e,"code"):

print e.code

if hasattr(e,"reason"):

print e.reason

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值