百度贴吧保存文件

# coding:utf-8
import urllib2, re, random

# 1.拼接url地址
# tie_ba_id = input("填写贴吧的ID:")
absolute_url = "https://tieba.baidu.com/p/5147943292"

# 2.准备请求头
user_agent_list = [
    "Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/
20100101Firefox/4.0.1",
    "Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1)",
    "Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11",
    "Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/
535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11",
    "Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1)",
    "Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;Trident/
4.0;SE2.XMetaSr1.0;SE2.XMetaSr1.0;.NETCLR2.0.50727;SE2.XMetaSr1.0)"
]
headers = {'User-Agent':random.choice(user_agent_list)}

request = urllib2.Request(absolute_url, headers=headers)
response = urllib2.urlopen(request)
html = response.read()
# 3.解析首页源代码,标题、总页数提取出来
pattern = re.compile(r'<li class="l_reply_num".*?<span class="red">
(.*?)</span>', re.S)

total_page = re.search(pattern, html)

# 获取总页数
total_number = int(total_page.group(1))

# 帖子标题
title_pattern = re.compile(r'<h1 class="core_title_txt.*?>(.*?)</h1>'
, re.S)
title = re.search(title_pattern, html).group(1)

# 将该贴的所有回复内容,写入到本地的txt文件中

file_test = open('{}.txt'.format(title).decode('utf-8'), 'w')

# 4.for循环遍历所有页面的帖子回复
for x in xrange(1, 3):
    print '正在爬取第{}页数据...'.format(x)
    every_page_url = absolute_url + '?pn={}'.format(x)
    request = urllib2.Request(every_page_url, headers=headers)
    response = urllib2.urlopen(request)
    # 设置正则表达式,提取回复作者昵称,回复内容
    pattern = re.compile(r'<a.*?class="p_author_name.*?>(.*?)</a>.*?
<div id="post_content.*?>(.*?)</div>', re.S)
    html_string = response.read()
    results_list = re.findall(pattern, html_string)

    # 对获取的结果列表进行过滤,去除多余的标签
    for res_tuple in results_list:
        remove_element = re.compile(r'<.*?>', re.S)
        replace_br = re.compile(r'<br>|<br/>')
        remove_n = re.compile(r'\n')
        remove_space = re.compile(r' ', re.S)
        name = res_tuple[0]
        name = re.sub(remove_n, '', name)
        name = re.sub(remove_space, '', name)
        name = re.sub(remove_element, '', name)

        content = res_tuple[1]
        content = re.sub(remove_n, '', content)
        content = re.sub(remove_element, '', content)
        content = re.sub(replace_br, '\n', content)
        content = re.sub(remove_space, '', content)

        # 将过滤后的内容写入到本地文件中
        file_test.write('用户昵称:{}'.format(name))
        file_test.write('\n')
        file_test.write('用户回复:{}'.format(content))
        file_test.write('\n')

file_test.close()
print '数据写入完成!'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
百度贴吧模拟登录爬虫是一种程序,可以模拟用户登录百度贴吧网站,并获取用户在贴吧中的相关信息。下面是一个简单的百度贴吧模拟登录爬虫的实现步骤: 1. 导入所需的库:使用Python编程语言,需要导入requests、BeautifulSoup和re等库。 2. 发送登录请求:使用requests库发送POST请求,将用户名和密码等登录信息作为参数传递给登录接口。 3. 获取登录后的Cookie:登录成功后,服务器会返回一个包含用户登录状态的Cookie,需要将其保存下来,以便后续的请求中使用。 4. 访问目标页面:使用requests库发送GET请求,携带登录后的Cookie,访问目标页面。 5. 解析页面内容:使用BeautifulSoup库解析目标页面的HTML内容,提取所需的信息。 6. 数据处理和存储:对解析得到的数据进行处理和存储,可以保存到本地文件或者数据库中。 需要注意的是,百度贴吧网站有反爬机制,为了避免被封禁或限制访问,可以采取以下策略: - 使用随机User-Agent:在发送请求时,设置随机的User-Agent头部信息,模拟不同浏览器的访问行为。 - 设置访问间隔:在发送请求之间设置适当的时间间隔,避免过于频繁的请求。 - 处理验证码:如果遇到验证码,可以使用第三方库或者手动输入验证码进行处理。 - 使用代理IP:使用代理IP进行请求,隐藏真实的IP地址。 以上是一个简单的百度贴吧模拟登录爬虫的实现步骤和一些反爬策略。具体的实现方式和代码可以根据具体需求和情况进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值