≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > Python

python爬取网页数据

人气:868 时间:2019-01-20

这篇文章主要为大家详细介绍了python爬取网页数据,具有一定的参考价值,可以用来参考一下。

感兴趣python爬取网页数据的小伙伴,下面一起跟随四海网的小编罗X来看看吧。

需求: 获取某网站近10万条数据记录的相关详细信息。

分析:数据的基本信息存放于近1万个页面上,每个页面上10条记录。如果想获取特定数据记录的详细信息,需在基本信息页面上点击相应记录条目,跳转到详细信息页面。详细信息页面的地址可从基本信息页面里的href属性获取。

方法:开始时使用beautiful soup进行爬网,因速度较慢,换用lxml,速度改善不明显。

  beautiful soup

import bs4
import re
import requests
import lxml.html
       
f=open('testpython2.txt','w',encoding='utf-8')
j=30
while(j<41):
    beautiful = requests.get(webaddress).content
    soup=bs4.BeautifulSoup(beautiful,"lxml")
    m=5
    while m <85:
        daf1=soup.find_all('a')[m].get_text()
         if daf1!='哈哈':
            daf=soup.find_all('a')[m-1].get('href')
            c='webaddress1'+ str(daf)
            if requests.get(c).status_code==500:
                f.write('Cannot found!')
                f.write('\n')
            else:
                beautiful1=requests.get(c).content
                soup1=bs4.BeautifulSoup(beautiful1,"lxml")
                daf2=soup1.find(id="project_div2")
                p=2
                while (p<20):
                    mm=daf2.find_all('td')[p].get_text()
                    f.write(mm)
                    f.write(' ')
                    p=p+2
                daf3=soup1.find(id="xiugai")
                hh=0
                for tag in daf3(re.compile("td")):
                    hh=hh+1
                q=2
                while (q<hh) :
                    nn=daf3.find_all('td')[q].get_text().replace(' ','')
                    nn1=daf3.find_all('td')[q+1].get_text().replace(' ','')
                    nn2=daf3.find_all('td')[q-1].get_text().replace(' ','')
                    nn3=daf3.find_all('td')[q-2].get_text().replace(' ','')
                    if nn2==nn3:
                        f.write(nn2)
                        f.write(';')
                        f.write(nn)
                        f.write(',')
                        f.write(nn1)
                        f.write(',')   
                    else:
                        if nn2=='1':
                            f.write('InteriorRing ')
                            f.write(nn2)
                            f.write(';')
                            f.write(nn)
                            f.write(',')
                            f.write(nn1)
                            f.write(',')
                        else:
                            f.write(nn2)
                            f.write(';')
                            f.write(nn)
                            f.write(',')
                            f.write(nn1)
                            f.write(',')   
                    q=q+4
            f.write('\n')
        m=m+8
    j=j+1

f.close()
lxml
import bs4
import re
import requests
import lxml.html
from lxml.cssselect import CSSSelector

f=open('testpython2.txt','w',encoding='utf-8')
j=2001
while(j<2592):
    link="webaddress"
    headers={'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6','referer':'link'}
    beautiful = requests.get(link,headers=headers).content
    tree=lxml.html.fromstring(beautiful)
    sel=CSSSelector('div div table tr td a')
    results=sel(tree)
    m=5
    while m <85:
        match=results[m]
        if results[m-4].text=='XXX:
            daf=match.get('href')
            c='webaddress2'+ str(daf)
            if requests.get(c).status_code==500:
                f.write('Cannot found!')
                f.write('\n')
            else:
                beautiful1=requests.get(c).content
                tree1=lxml.html.fromstring(beautiful1)
                sel1=CSSSelector('div[id="project_div2"] table tr td')
                results1=sel1(tree1)
                p=2
                while (p<20):
                    match1=results1[p]
                    mm=match1.text
                    if mm is None:
                        f.write('NoValue')
                    else:
                        f.write(mm)
                    f.write(' ')
                    p=p+2
                sel2=CSSSelector('div[id="xiugai"] table tr')
                sel3=CSSSelector('div[id="xiugai"] table tr td')
                results2=sel2(tree1)
                results3=sel3(tree1)
                ee=len(results3)
                q=2
                while (q<ee+1) :
                    nn1=results3[q].text
                    nn2=results3[q+1].text
                    nn3=results3[q-1].text
                    nn4=results3[q-2].text
                    f.write(nn4)
                    f.write(',')
                    f.write(nn3)
                    f.write(',')
                    f.write(nn1)
                    f.write(',')
                    f.write(nn2)
                    f.write(';')
                    q=q+4
                f.write('\n')
        m=m+8
    j=j+1
f.close()
 

本文来自:http://www.q1010.com/181/2939-0.html

注:关于python爬取网页数据的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:爬取

您可能感兴趣的文章

  • python2、python3 伪装浏览器爬取网页内容的简单示例
  • python 爬取歌曲评论的简单示例
  • python 爬取网站Jpg图片的简单示例
上一篇:python爬虫最简单代码
下一篇:python之pytorch二分类交叉熵逆样本频率权重的简单示例
热门文章
  • Python 处理Cookie的菜鸟教程(一)Cookie库
  • python之pandas取dataframe特定行列的简单示例
  • Python解决json.dumps错误::‘utf8’ codec can‘t decode byte
  • Python通过pythony连接Hive执行Hql的脚本
  • Python 三种方法删除列表中重复元素的简单示例
  • python爬虫代码示例
  • Python 中英文标点转换示例
  • Python 不得不知的开源项目解析
  • Python urlencode编码和url拼接实现方法
  • python按中文拆分中英文混合字符串的简单示例
  • 最新文章
    • Python利用numpy三层神经网络的简单示例
    • pygame可视化幸运大转盘的简单示例
    • Python爬虫之爬取二手房信息的简单示例
    • Python之time库的简单示例
    • OpenCV灰度、高斯模糊、边缘检测的简单示例
    • Python安装Bs4及使用的简单示例
    • django自定义manage.py管理命令的简单示例
    • Python之matplotlib 向任意位置添加一个子图(axes)的简单示例
    • Python图像标签标注软件labelme分析的简单示例
    • python调用摄像头并拍照发邮箱的简单示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。