【父母B签】写一个同样适合爸妈看的签证攻略

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货

最近看过此主题的会员

E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
码农求职神器Triplebyte:
不用海投
内推多家公司面试
前Google华人高管创立
面试offer一键直通
Leap.ai助你进入热门独角兽
查看: 486|回复: 1
收起左侧

问一个python scrapy 的问题,和程序设计的逻辑更相关

[复制链接] |试试Instant~ |关注本帖
我的人缘0
oovbbg 发表于 2018-6-13 06:15:04 | 显示全部楼层 |阅读模式
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  80% (8)
 
 
20% (2)  踩

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
问一个python scrapy 的问题,和程序设计的逻辑更相关 .
用python scrapy crawl 网页,每次scrape 一个string, 再parse, 从中得到一个数字,再输出结果。用两个函数一是 start_requests, 二是 parse. scrape 的是一个文件,有一列string, 在start_requests 下放这个 input 文件, 有一个loop, 然后在parse 函数里parse, 输出数字到一个output 文件。. 1point3acres

现在的问题是,每次在start_requests 的loop 里读入两个string, 一个英文,另一个对应的中文翻译,在parse 里parse 出想要得到的数字,再把两个数字加起来放在输出文件的最后一列。格式如下

英文string  中文string   date   相加得到的数字
XXX            XXX            XXX    XXX. visit 1point3acres for more.

在start_requests 里用 formrequest scraping, 返回callback=parse 函数,再用parse 函数解析response. 如果每次scrape 两个string, 就有两个callback=parse, parse1, parse2 , 这样就要有两个parse函数,两个parse 里的数据似乎不能传输,也就不能把两个数字加起来,作为输出,怎么解决这个问题?

以下有两个例子


例子  1 每次scrape 一个string
. more info on 1point3acres

#!/usr/bin/python
# coding: utf-8

import datetime
. 留学申请论坛-一亩三分地
import scrapy
import time
from bs4 import BeautifulSoup
class QuotesSpider(scrapy.Spider):
   name="quotes"
.本文原创自1point3acres论坛
   headers = {
    'Cookie': 'SUV:003C177DD8CDE00A5983B697C4178439;CXID:10B16D348AB916252883D43F2491459E;IPLOC:US;SUID:0AE0CDD85B68860A585434400004F97E;weixinIndexVisited:1;JSESSIONID:aaa0tnqzUtC66c0zZHQfw;ABTEST:4|1518221833|v1;SNUID:D9321F0AD2D6B7D5C7F18502D39584AB;sct:43;ppinf:5|1518544445|1519754045|dHJ1c3Q6MToxfGNsaWVudGlkOjQ6MjAxN3x1bmlxbmFtZTo0Om1hc2h8Y3J0OjEwOjE1MTg1NDQ0NDV8cmVmbmljazo0Om1hc2h8dXNlcmlkOjQ0Om85dDJsdUVtc05QMnRlaUFwRm45UnNTLV9JOGNAd2VpeGluLnNvaHUuY29tfA;pprdig:Kelig9IfK1LADeDmIEHzS9HJCCMH0wdFwYiKxVEyGntRyJ2a1xYBhf2kxxBxuzpRJ1HDGMGty2WUtuAJ0dWhbKtzOm-Ol_p1y-WmvV-fqVvqTxU3W9Z1CDehvNLSQFqELiiJKXRdY4w5B4sjL8u65lTMQ62gF6GlOHnN5zsTF0g;sgid:04-31089959-AVqDJj3ZMo0w5mfTqic6uHn8;ppmdig:1518544446000000447a37e7df0d662376a44b14a63a9073',. 1point 3acres 论坛
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
    "Referer": "http://weixin.sogou.com/weixin?type=2"
    }. more info on 1point3acres
. visit 1point3acres for more.
   def start_requests(self,filename=None):
             with open('file99.txt','r') as f:
                for query in f:
                  query=query
                  self.log("%s" % query)
                  yield scrapy.http.FormRequest(url='http://weixin.sogou.com/weixin',. Waral 博客有更多文章,
                           formdata={'type':'2',
                                     'ie':'utf8',
                                     'query':query,
                                     'tsn':'1',
                                     'ft':'',
                                     'et':'',
                                    #  'sst0': str(int(time.time()*1000)),
                                    # 'page': str(1),
                                     'interation':'',. 1point3acres
                                     'wxid':'',.留学论坛-一亩-三分地
                                     'usip':''},
                           headers=self.headers,method='get', dont_filter=True,
                          meta = {'dont_redirect': True, "handle_httpstatus_list" : [301, 302, 303]},. 牛人云集,一亩三分地
                           callback=self.parse)
来源一亩.三分地论坛.
   def parse(self, response):

                   filename1="quotes-111.txt"
                   with open(filename1,"a") as k:
                     
                      soup = BeautifulSoup(response.body, 'html.parser')
                      row2= soup.find_all('input',attrs={"class":"query"})
                      cc_rating_text="约".decode('utf8'). 留学申请论坛-一亩三分地
                      dd_rating_text="条".decode('utf8')
                      for row in soup.find_all('div',attrs={"class" : "mun"}):
                         line=row.text.strip()
                         tag_found = line.find(cc_rating_text)
                         tag_found2 = line.find(dd_rating_text). 留学申请论坛-一亩三分地

.本文原创自1point3acres论坛
                         rating = line[tag_found+1:tag_found2]
                         -google 1point3acres

                         . more info on 1point3acres
                         date11=datetime.datetime.now().strftime ("%m/%d/%Y")                         . 牛人云集,一亩三分地
                        
                         k.write(row2[0]["value"].encode('utf8')+"\t"+str(date11)+"\t"+str(rating)+"\n")
                        
                          
                          
                      row1=0
                     
                     
                      if not soup.find_all('div',attrs={"class" : "mun"}):

. more info on 1point3acres                          soup = BeautifulSoup(response.body, 'html.parser')
                            来源一亩.三分地论坛.
                          for kk in soup.find_all('p',attrs={"class":"txt-info"}):. 牛人云集,一亩三分地
                               row1=row1+1. more info on 1point3acres
                          date22=datetime.datetime.now().strftime ("%m/%d/%Y")  
                          k.write(row2[0]["value"].encode('utf8')+"\t"+str(date22)+"\t"+str(row1)+"\n")



        
                   self.log("Saved file %s" % filename1)


例子 2 每次读入两个string , 在一个loop 里scrape, 但是后来发现结果黏在一起,不能相加了。

#!/usr/bin/python
# coding: utf-8
来源一亩.三分地论坛.
import datetime
import itertools
import scrapy
import time. visit 1point3acres for more.
from bs4 import BeautifulSoup. more info on 1point3acres
class QuotesSpider(scrapy.Spider):
   name="quotes"

   headers = {
    'Cookie': 'SUV:003C177DD8CDE00A5983B697C4178439;CXID:10B16D348AB916252883D43F2491459E;IPLOC:US;SUID:0AE0CDD85B68860A585434400004F97E;weixinIndexVisited:1;JSESSIONID:aaa0tnqzUtC66c0zZHQfw;ABTEST:4|1518221833|v1;SNUID:D9321F0AD2D6B7D5C7F18502D39584AB;sct:43;ppinf:5|1518544445|1519754045|dHJ1c3Q6MToxfGNsaWVudGlkOjQ6MjAxN3x1bmlxbmFtZTo0Om1hc2h8Y3J0OjEwOjE1MTg1NDQ0NDV8cmVmbmljazo0Om1hc2h8dXNlcmlkOjQ0Om85dDJsdUVtc05QMnRlaUFwRm45UnNTLV9JOGNAd2VpeGluLnNvaHUuY29tfA;pprdig:Kelig9IfK1LADeDmIEHzS9HJCCMH0wdFwYiKxVEyGntRyJ2a1xYBhf2kxxBxuzpRJ1HDGMGty2WUtuAJ0dWhbKtzOm-Ol_p1y-WmvV-fqVvqTxU3W9Z1CDehvNLSQFqELiiJKXRdY4w5B4sjL8u65lTMQ62gF6GlOHnN5zsTF0g;sgid:04-31089959-AVqDJj3ZMo0w5mfTqic6uHn8;ppmdig:1518544446000000447a37e7df0d662376a44b14a63a9073',
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",. more info on 1point3acres
    "Referer": "http://weixin.sogou.com/weixin?type=2"
    }


   def start_requests(self,filename=None):. 围观我们@1point 3 acres
              with open('file66.txt','r') as f:
                for line1,line2 in itertools.izip_longest(*[f]*2):
                  query=line1
                  query2=line2
                  query3=[query,query2]

              #    self.log("%s" % query)
                  for item in query3:
                   yield scrapy.http.FormRequest(url='http://weixin.sogou.com/weixin',
                           formdata={'type':'2', 来源一亩.三分地论坛.
                                     'ie':'utf8',
                                     'query':item,
                                     'tsn':'1',-google 1point3acres
                                     'ft':'',
                                     'et':'',
                                    #  'sst0': str(int(time.time()*1000)),.本文原创自1point3acres论坛
                                    # 'page': str(1),
                                     'interation':'',
                                     'wxid':'',
                                     'usip':''},
                           headers=self.headers,method='get', dont_filter=True,
                          meta = {'dont_redirect': True, "handle_httpstatus_list" : [301, 302, 303]},.1point3acres网
                           callback=self.parse1)

                       .本文原创自1point3acres论坛

   def parse1(self, response):

                   filename1="quotes-111.txt"
                   with open(filename1,"a") as k:
                     
                      soup = BeautifulSoup(response.body, 'html.parser')
                      row2= soup.find_all('input',attrs={"class":"query"})
                      cc_rating_text="约".decode('utf8')
                      dd_rating_text="条".decode('utf8').本文原创自1point3acres论坛
                      if soup.find_all('div',attrs={"class" : "mun"}):
                       for row in soup.find_all('div',attrs={"class" : "mun"}):
                         line=row.text.strip()
                         tag_found = line.find(cc_rating_text)
                         tag_found2 = line.find(dd_rating_text)


                         rating1 = line[tag_found+1:tag_found2]
                        

                        
                         date11=datetime.datetime.now().strftime ("%m/%d/%Y")                        
                        
                      #   k.write(row2[0]["value"].encode('utf8')+"\t"+str(date11)+"\t"+str(rating1)+"\n")
                        
                          
                          

                      . Waral 博客有更多文章,
                     
                      elif not  soup.find_all('div',attrs={"class" : "mun"}):

                          soup = BeautifulSoup(response.body, 'html.parser')

                          rating1=0
                           
                          for kk in soup.find_all('p',attrs={"class":"txt-info"}):
                               rating1=rating1+1-google 1point3acres
                          date11=datetime.datetime.now().strftime ("%m/%d/%Y")


                      k.write(row2[0]["value"].encode('utf8')+"\t"+str(date11)+"\t"+str(rating1)+"\n")







. 一亩-三分-地,独家发布

上一篇:已经大二了,能在大三结束的时候转学吗?
下一篇:读博or工作
我的人缘0
itisnanful 发表于 2018-6-16 11:20:40 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (15)
 
 
0% (0)  踩
def __init__里面搞个变量专门存和,然后每次start_request的yield之前都清零一下...?
资历最老的留学申请文书修改服务:EssayEdge
回复

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|小黑屋|一亩三分地论坛声明

GMT+8, 2018-8-16 20:43

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表