我_落_泪_、情绪 发表于 2020-3-11 19:10

第一次写爬虫,爬取了全国各地的fm电台

本帖最后由 我_落_泪_、情绪 于 2020-3-11 20:03 编辑

!!!不是fm电台,只是爬取的文本频道号,我们上课要用,不要误解了,不好意思!!!
爬取网站http://www.radio366.com/
近期在上关于无线搜索的课,因为要查找本地的fm频道,发现了这个网站,但是要先选择地址,再打开频道,才能看到具体的fm频道。一个一个弄十分麻烦,因此写了一个爬虫来爬取,该网站应该没有反爬机制。适合新手练手。
贴上代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/3/11 14:49
# @AuThor: Ft
# @site    :
# @file    : fm.py
# @Software: PyCharm
#---------------------
import requests
from lxml import etree
import re
txtName = "codingWord.txt"
f=open(txtName, "a+")
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"}
url2="http://www.radio366.com/"
html2=requests.get(url2,headers=headers)
html2.encoding = 'gb2312'
page2 = etree.HTML(html2.text)
shengfen=page2.xpath("//*[@id='sheng']/ul//a")
for city in shengfen:
    js=re.search(r'=.*',city.attrib['href'])
    print(city.text)
    shengs=js.group()
    url="http://www.radio366.com/xx.asp?sheng="+shengs
    html=requests.get(url,headers=headers)
    html.encoding = 'gb2312'
    page = etree.HTML(html.text)
    result = etree.tostring(page, encoding="gb2312", pretty_print=True, method="html").decode('gb2312')
    diantai=page.xpath('//body/div[@class="content"]/ul//a/@href')
    name=page.xpath('//body/div[@class="content"]/ul//a/text()')
    number=len(name)
    for i in range(0,number):
      xpage="http://www.radio366.com/"+diantai
      html1 = requests.get(xpage, headers=headers)
      html1.encoding = 'gb2312'
      page1 = etree.HTML(html1.text)
      result1 = etree.tostring(page1, encoding="gb2312", pretty_print=True, method="html").decode('gb2312')
      fm=page1.xpath('//div[@id="plbottom"]/text()')
      dian=re.search(r'FM\d{1,3}.\d',fm)
      if(dian==None) and len(fm)>1:
            dian = re.search(r'FM\d{1,3}.\d', fm)
            if (dian == None):
                dian = re.search(r'调频\d{1,3}.\d', fm)
      if(dian==None):
            dian=re.search(r'调频\d{1,3}.\d',fm)
      if (dian != None):
            print(name)
            print(dian.group())





爬下来的内容提交附件了

kfli 发表于 2020-3-11 19:22

我_落_泪_、情绪 发表于 2020-3-11 20:01

dunniu 发表于 2020-3-11 19:49
根本没有收听地址,就个列表啊!

我这个就爬的频道号,不好意思,好像有点误解了。。

hyoulin68 发表于 2020-3-11 19:20

好专业呀,不搞这一行的看不懂

dunniu 发表于 2020-3-11 19:49

根本没有收听地址,就个列表啊!

judgecx 发表于 2020-3-11 19:55

{:301_998:}楼主能写个 采集url的嘛 不会写 {:301_999:}

我_落_泪_、情绪 发表于 2020-3-11 20:00

搞错了,我只是爬了一下各个地区频道的频道号,没有音频。不要误下了。。。

我_落_泪_、情绪 发表于 2020-3-11 20:03

judgecx 发表于 2020-3-11 19:55
楼主能写个 采集url的嘛 不会写

我会的不多,可以试一下

MOEYU_VANILLA 发表于 2020-3-11 20:09

支持支持

百思的姐 发表于 2020-3-11 20:11

爬虫写的好 牢饭能吃饱
页: [1] 2
查看完整版本: 第一次写爬虫,爬取了全国各地的fm电台